11use criterion:: { black_box, criterion_group, criterion_main, Criterion } ;
22use rand:: Rng ;
33
4+ #[ cfg( feature = "use_blake3" ) ]
45use multihash:: {
56 Blake2b256 , Blake2b512 , Blake2s128 , Blake2s256 , Blake3 , Identity , Keccak224 , Keccak256 ,
67 Keccak384 , Keccak512 , MultihashDigest , Sha1 , Sha2_256 , Sha2_512 , Sha3_224 , Sha3_256 , Sha3_384 ,
78 Sha3_512 ,
89} ;
10+ #[ cfg( not( feature = "use_blake3" ) ) ]
11+ use multihash:: {
12+ Blake2b256 , Blake2b512 , Blake2s128 , Blake2s256 , Identity , Keccak224 , Keccak256 , Keccak384 ,
13+ Keccak512 , MultihashDigest , Sha1 , Sha2_256 , Sha2_512 , Sha3_224 , Sha3_256 , Sha3_384 , Sha3_512 ,
14+ } ;
915
1016macro_rules! group_digest {
1117 ( $criterion: ident, $( $id: expr => $hash: ident, $input: expr) * ) => { {
@@ -45,6 +51,7 @@ macro_rules! group_stream {
4551fn bench_digest ( c : & mut Criterion ) {
4652 let mut rng = rand:: thread_rng ( ) ;
4753 let data: Vec < u8 > = ( 0 ..1024 ) . map ( |_| rng. gen ( ) ) . collect ( ) ;
54+ #[ cfg( feature = "use_blake3" ) ]
4855 group_digest ! ( c,
4956 "identity" => Identity , & data
5057 "sha1" => Sha1 , & data
@@ -64,12 +71,32 @@ fn bench_digest(c: &mut Criterion) {
6471 "blake2s_256" => Blake2s256 , & data
6572 "blake3" => Blake3 , & data
6673 ) ;
74+ #[ cfg( not( feature = "use_blake3" ) ) ]
75+ group_digest ! ( c,
76+ "identity" => Identity , & data
77+ "sha1" => Sha1 , & data
78+ "sha2_256" => Sha2_256 , & data
79+ "sha2_512" => Sha2_512 , & data
80+ "sha3_224" => Sha3_224 , & data
81+ "sha3_256" => Sha3_256 , & data
82+ "sha3_384" => Sha3_384 , & data
83+ "sha3_512" => Sha3_512 , & data
84+ "keccak_224" => Keccak224 , & data
85+ "keccak_256" => Keccak256 , & data
86+ "keccak_384" => Keccak384 , & data
87+ "keccak_512" => Keccak512 , & data
88+ "blake2b_256" => Blake2b256 , & data
89+ "blake2b_512" => Blake2b512 , & data
90+ "blake2s_128" => Blake2s128 , & data
91+ "blake2s_256" => Blake2s256 , & data
92+ ) ;
6793}
6894
6995/// Chunks the data into 256-byte slices.
7096fn bench_stream ( c : & mut Criterion ) {
7197 let mut rng = rand:: thread_rng ( ) ;
7298 let data: Vec < u8 > = ( 0 ..1024 ) . map ( |_| rng. gen ( ) ) . collect ( ) ;
99+ #[ cfg( feature = "use_blake3" ) ]
73100 group_stream ! ( c,
74101 "identity" => Identity , & data
75102 "sha1" => Sha1 , & data
@@ -89,6 +116,25 @@ fn bench_stream(c: &mut Criterion) {
89116 "blake2s_256" => Blake2s256 , & data
90117 "blake3" => Blake3 , & data
91118 ) ;
119+ #[ cfg( not( feature = "use_blake3" ) ) ]
120+ group_stream ! ( c,
121+ "identity" => Identity , & data
122+ "sha1" => Sha1 , & data
123+ "sha2_256" => Sha2_256 , & data
124+ "sha2_512" => Sha2_512 , & data
125+ "sha3_224" => Sha3_224 , & data
126+ "sha3_256" => Sha3_256 , & data
127+ "sha3_384" => Sha3_384 , & data
128+ "sha3_512" => Sha3_512 , & data
129+ "keccak_224" => Keccak224 , & data
130+ "keccak_256" => Keccak256 , & data
131+ "keccak_384" => Keccak384 , & data
132+ "keccak_512" => Keccak512 , & data
133+ "blake2b_256" => Blake2b256 , & data
134+ "blake2b_512" => Blake2b512 , & data
135+ "blake2s_128" => Blake2s128 , & data
136+ "blake2s_256" => Blake2s256 , & data
137+ ) ;
92138}
93139
94140criterion_group ! ( benches, bench_digest, bench_stream) ;
0 commit comments