1 use criterion
::measurement
::Measurement
;
2 use criterion
::{criterion_group, criterion_main, Bencher, BenchmarkId, Criterion}
;
4 use rand
::distributions
::Standard
;
5 use rand
::rngs
::SmallRng
;
6 use rand
::{Rng, SeedableRng}
;
8 use phf_generator
::generate_hash
;
10 fn gen_vec(len
: usize) -> Vec
<u64> {
11 SmallRng
::seed_from_u64(0xAAAAAAAAAAAAAAAA)
12 .sample_iter(Standard
)
17 fn bench_hash
<M
: Measurement
>(b
: &mut Bencher
<M
>, len
: &usize) {
18 let vec
= gen_vec(*len
);
19 b
.iter(|| generate_hash(&vec
))
22 fn gen_hash_small(c
: &mut Criterion
) {
23 let sizes
= vec
![0, 1, 2, 5, 10, 25, 50, 75];
25 c
.bench_with_input(BenchmarkId
::new("gen_hash_small", *size
), size
, bench_hash
);
29 fn gen_hash_med(c
: &mut Criterion
) {
30 let sizes
= vec
![100, 250, 500, 1000, 2500, 5000, 7500];
32 c
.bench_with_input(BenchmarkId
::new("gen_hash_medium", *size
), size
, bench_hash
);
36 fn gen_hash_large(c
: &mut Criterion
) {
37 let sizes
= vec
![10_000, 25_000, 50_000, 75_000];
39 c
.bench_with_input(BenchmarkId
::new("gen_hash_large", *size
), size
, bench_hash
);
43 fn gen_hash_xlarge(c
: &mut Criterion
) {
44 let sizes
= vec
![100_000, 250_000, 500_000, 750_000, 1_000_000];
46 c
.bench_with_input(BenchmarkId
::new("gen_hash_xlarge", *size
), size
, bench_hash
);
58 criterion_main
!(benches
);