@@ -419,6 +419,30 @@ fn bench_adler32_micro(c: &mut Criterion) {
419419 group. finish ( ) ;
420420}
421421
422+ fn bench_adler32_tail ( c : & mut Criterion ) {
423+ // Sizes to test tail optimization: 1, 2, 3 (small), 7 (4+3), 15 (8+4+3), 31 (16+8+4+3)
424+ let sizes = [ 1 , 2 , 3 , 7 , 15 , 31 ] ;
425+ let mut group = c. benchmark_group ( "Adler32 Tail" ) ;
426+
427+ for size in sizes {
428+ let data = vec ! [ 0u8 ; size] ;
429+ group. throughput ( Throughput :: Bytes ( size as u64 ) ) ;
430+
431+ group. bench_with_input (
432+ BenchmarkId :: new ( "libdeflate-rs" , size) ,
433+ & size,
434+ |b, & _size| {
435+ b. iter ( || adler32 ( 1 , & data) ) ;
436+ } ,
437+ ) ;
438+
439+ group. bench_with_input ( BenchmarkId :: new ( "libdeflater" , size) , & size, |b, & _size| {
440+ b. iter ( || libdeflater:: adler32 ( & data) ) ;
441+ } ) ;
442+ }
443+ group. finish ( ) ;
444+ }
445+
422446fn bench_checksums ( c : & mut Criterion ) {
423447 let files = [
424448 ( "XXS" , "bench_data/data_XXS.bin" ) ,
@@ -1412,6 +1436,7 @@ criterion_group!(
14121436 bench_parallel_alloc,
14131437 bench_adler32_nano,
14141438 bench_adler32_micro,
1439+ bench_adler32_tail,
14151440 bench_crc32_micro,
14161441 bench_decompress_offset8,
14171442 bench_decompress_offset3,
0 commit comments