/* in case user likes doing a byte at a time, keep it fast */ if buf.len() == 1 { return adler32_len_1(adler, buf, sum2);
}
/* initial Adler-32 value (deferred check for len == 1 speed) */ if buf.is_empty() { return adler | (sum2 << 16);
}
/* in case short lengths are provided, keep it somewhat fast */ if buf.len() < 16 { return adler32_len_16(adler, buf, sum2);
}
letmut it = buf.chunks_exact(NMAX as usize); for big_chunk in it.by_ref() { const N: usize = if UNROLL_MORE { 16 } else { 8 } as usize; let it = big_chunk.chunks_exact(N); for chunk in it { if N == 16 {
do16!(adler, sum2, chunk);
} else {
do8!(adler, sum2, chunk, 0);
}
}
adler %= BASE;
sum2 %= BASE;
}
/* do remaining bytes (less than NMAX, still just one modulo) */ return adler32_len_64(adler, it.remainder(), sum2);
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.