1
1
use crc:: * ;
2
2
use criterion:: { criterion_group, criterion_main} ;
3
- use criterion:: { Benchmark , Criterion , Throughput } ;
3
+ use criterion:: { Criterion , Throughput } ;
4
4
5
5
pub const BLUETOOTH : Crc < u8 > = Crc :: < u8 > :: new ( & CRC_8_BLUETOOTH ) ;
6
6
pub const X25 : Crc < u16 > = Crc :: < u16 > :: new ( & CRC_16_IBM_SDLC ) ;
@@ -9,64 +9,54 @@ pub const GSM_40: Crc<u64> = Crc::<u64>::new(&CRC_40_GSM);
9
9
pub const ECMA : Crc < u64 > = Crc :: < u64 > :: new ( & CRC_64_ECMA_182 ) ;
10
10
pub const DARC : Crc < u128 > = Crc :: < u128 > :: new ( & CRC_82_DARC ) ;
11
11
12
+ const INPUT_SIZE : usize = 1_000_000 ;
13
+
12
14
fn crc8 ( c : & mut Criterion ) {
13
15
let mut digest = BLUETOOTH . digest ( ) ;
14
- let bytes = vec ! [ 0u8 ; 1_000_000 ] ;
15
- c. bench (
16
- "crc8" ,
17
- Benchmark :: new ( "crc8" , move |b| b. iter ( || digest. update ( & bytes) ) )
18
- . throughput ( Throughput :: Bytes ( 1_000_000 ) ) ,
19
- ) ;
16
+ let bytes = vec ! [ 0u8 ; INPUT_SIZE ] ;
17
+ let mut group = c. benchmark_group ( "crc8" ) ;
18
+ group. throughput ( Throughput :: Bytes ( bytes. len ( ) as u64 ) )
19
+ . bench_function ( "crc8" , move |b| b. iter ( || digest. update ( & bytes) ) ) ;
20
20
}
21
21
22
22
fn crc16 ( c : & mut Criterion ) {
23
23
let mut digest = X25 . digest ( ) ;
24
- let bytes = vec ! [ 0u8 ; 1_000_000 ] ;
25
- c. bench (
26
- "crc16" ,
27
- Benchmark :: new ( "crc16" , move |b| b. iter ( || digest. update ( & bytes) ) )
28
- . throughput ( Throughput :: Bytes ( 1_000_000 ) ) ,
29
- ) ;
24
+ let bytes = vec ! [ 0u8 ; INPUT_SIZE ] ;
25
+ let mut group = c. benchmark_group ( "crc16" ) ;
26
+ group. throughput ( Throughput :: Bytes ( bytes. len ( ) as u64 ) )
27
+ . bench_function ( "crc16" , move |b| b. iter ( || digest. update ( & bytes) ) ) ;
30
28
}
31
29
32
30
fn crc32 ( c : & mut Criterion ) {
33
31
let mut digest = CASTAGNOLI . digest ( ) ;
34
- let bytes = vec ! [ 0u8 ; 1_000_000 ] ;
35
- c. bench (
36
- "crc32" ,
37
- Benchmark :: new ( "crc32" , move |b| b. iter ( || digest. update ( & bytes) ) )
38
- . throughput ( Throughput :: Bytes ( 1_000_000 ) ) ,
39
- ) ;
32
+ let bytes = vec ! [ 0u8 ; INPUT_SIZE ] ;
33
+ let mut group = c. benchmark_group ( "crc32" ) ;
34
+ group. throughput ( Throughput :: Bytes ( bytes. len ( ) as u64 ) )
35
+ . bench_function ( "crc32" , move |b| b. iter ( || digest. update ( & bytes) ) ) ;
40
36
}
41
37
42
38
fn crc40 ( c : & mut Criterion ) {
43
39
let mut digest = GSM_40 . digest ( ) ;
44
- let bytes = vec ! [ 0u8 ; 1_000_000 ] ;
45
- c. bench (
46
- "crc40" ,
47
- Benchmark :: new ( "crc40" , move |b| b. iter ( || digest. update ( & bytes) ) )
48
- . throughput ( Throughput :: Bytes ( 1_000_000 ) ) ,
49
- ) ;
40
+ let bytes = vec ! [ 0u8 ; INPUT_SIZE ] ;
41
+ let mut group = c. benchmark_group ( "crc40" ) ;
42
+ group. throughput ( Throughput :: Bytes ( bytes. len ( ) as u64 ) )
43
+ . bench_function ( "crc40" , move |b| b. iter ( || digest. update ( & bytes) ) ) ;
50
44
}
51
45
52
46
fn crc64 ( c : & mut Criterion ) {
53
47
let mut digest = ECMA . digest ( ) ;
54
- let bytes = vec ! [ 0u8 ; 1_000_000 ] ;
55
- c. bench (
56
- "crc64" ,
57
- Benchmark :: new ( "crc64" , move |b| b. iter ( || digest. update ( & bytes) ) )
58
- . throughput ( Throughput :: Bytes ( 1_000_000 ) ) ,
59
- ) ;
48
+ let bytes = vec ! [ 0u8 ; INPUT_SIZE ] ;
49
+ let mut group = c. benchmark_group ( "crc64" ) ;
50
+ group. throughput ( Throughput :: Bytes ( bytes. len ( ) as u64 ) )
51
+ . bench_function ( "crc64" , move |b| b. iter ( || digest. update ( & bytes) ) ) ;
60
52
}
61
53
62
54
fn crc82 ( c : & mut Criterion ) {
63
55
let mut digest = ECMA . digest ( ) ;
64
- let bytes = vec ! [ 0u8 ; 1_000_000 ] ;
65
- c. bench (
66
- "crc82" ,
67
- Benchmark :: new ( "crc82" , move |b| b. iter ( || digest. update ( & bytes) ) )
68
- . throughput ( Throughput :: Bytes ( 1_000_000 ) ) ,
69
- ) ;
56
+ let bytes = vec ! [ 0u8 ; INPUT_SIZE ] ;
57
+ let mut group = c. benchmark_group ( "crc82" ) ;
58
+ group. throughput ( Throughput :: Bytes ( bytes. len ( ) as u64 ) )
59
+ . bench_function ( "crc82" , move |b| b. iter ( || digest. update ( & bytes) ) ) ;
70
60
}
71
61
72
62
criterion_group ! ( crc8_benches, crc8) ;
0 commit comments