]> git.proxmox.com Git - rustc.git/blob - vendor/phf_generator/benches/benches.rs
New upstream version 1.62.1+dfsg1
[rustc.git] / vendor / phf_generator / benches / benches.rs
1 use criterion::measurement::Measurement;
2 use criterion::{criterion_group, criterion_main, Bencher, BenchmarkId, Criterion};
3
4 use rand::distributions::Standard;
5 use rand::rngs::SmallRng;
6 use rand::{Rng, SeedableRng};
7
8 use phf_generator::generate_hash;
9
10 fn gen_vec(len: usize) -> Vec<u64> {
11 SmallRng::seed_from_u64(0xAAAAAAAAAAAAAAAA)
12 .sample_iter(Standard)
13 .take(len)
14 .collect()
15 }
16
17 fn bench_hash<M: Measurement>(b: &mut Bencher<M>, len: &usize) {
18 let vec = gen_vec(*len);
19 b.iter(|| generate_hash(&vec))
20 }
21
22 fn gen_hash_small(c: &mut Criterion) {
23 let sizes = vec![0, 1, 2, 5, 10, 25, 50, 75];
24 for size in &sizes {
25 c.bench_with_input(BenchmarkId::new("gen_hash_small", *size), size, bench_hash);
26 }
27 }
28
29 fn gen_hash_med(c: &mut Criterion) {
30 let sizes = vec![100, 250, 500, 1000, 2500, 5000, 7500];
31 for size in &sizes {
32 c.bench_with_input(BenchmarkId::new("gen_hash_medium", *size), size, bench_hash);
33 }
34 }
35
36 fn gen_hash_large(c: &mut Criterion) {
37 let sizes = vec![10_000, 25_000, 50_000, 75_000];
38 for size in &sizes {
39 c.bench_with_input(BenchmarkId::new("gen_hash_large", *size), size, bench_hash);
40 }
41 }
42
43 fn gen_hash_xlarge(c: &mut Criterion) {
44 let sizes = vec![100_000, 250_000, 500_000, 750_000, 1_000_000];
45 for size in &sizes {
46 c.bench_with_input(BenchmarkId::new("gen_hash_xlarge", *size), size, bench_hash);
47 }
48 }
49
50 criterion_group!(
51 benches,
52 gen_hash_small,
53 gen_hash_med,
54 gen_hash_large,
55 gen_hash_xlarge
56 );
57
58 criterion_main!(benches);