diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 14:29:10 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 14:29:10 +0000 |
commit | 2aa4a82499d4becd2284cdb482213d541b8804dd (patch) | |
tree | b80bf8bf13c3766139fbacc530efd0dd9d54394c /third_party/rust/phf_generator/benches/benches.rs | |
parent | Initial commit. (diff) | |
download | firefox-2aa4a82499d4becd2284cdb482213d541b8804dd.tar.xz firefox-2aa4a82499d4becd2284cdb482213d541b8804dd.zip |
Adding upstream version 86.0.1.upstream/86.0.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'third_party/rust/phf_generator/benches/benches.rs')
-rw-r--r-- | third_party/rust/phf_generator/benches/benches.rs | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/third_party/rust/phf_generator/benches/benches.rs b/third_party/rust/phf_generator/benches/benches.rs new file mode 100644 index 0000000000..4e2d4db51e --- /dev/null +++ b/third_party/rust/phf_generator/benches/benches.rs @@ -0,0 +1,80 @@ +use criterion::*; + +use rand::distributions::Standard; +use rand::rngs::SmallRng; +use rand::{Rng, SeedableRng}; + +use phf_generator::generate_hash; + +fn gen_vec(len: usize) -> Vec<u64> { + SmallRng::seed_from_u64(0xAAAAAAAAAAAAAAAA).sample_iter(Standard).take(len).collect() +} + +fn bench_hash(b: &mut Bencher, len: &usize) { + let vec = gen_vec(*len); + b.iter(|| generate_hash(&vec)) +} + +fn gen_hash_small(c: &mut Criterion) { + let sizes = vec![0, 1, 2, 5, 10, 25, 50, 75]; + c.bench_function_over_inputs("gen_hash_small", bench_hash, sizes); +} + +fn gen_hash_med(c: &mut Criterion) { + let sizes = vec![100, 250, 500, 1000, 2500, 5000, 7500]; + c.bench_function_over_inputs("gen_hash_medium", bench_hash, sizes); +} + +fn gen_hash_large(c: &mut Criterion) { + let sizes = vec![10_000, 25_000, 50_000, 75_000]; + c.bench_function_over_inputs("gen_hash_large", bench_hash, sizes); +} + +fn gen_hash_xlarge(c: &mut Criterion) { + let sizes = vec![100_000, 250_000, 500_000, 750_000, 1_000_000]; + c.bench_function_over_inputs("gen_hash_xlarge", bench_hash, sizes); +} + +criterion_group!(benches, gen_hash_small, gen_hash_med, gen_hash_large, gen_hash_xlarge); + +#[cfg(not(feature = "rayon"))] +criterion_main!(benches); + +#[cfg(feature = "rayon")] +criterion_main!(benches, rayon::benches); + +#[cfg(feature = "rayon")] +mod rayon { + use criterion::*; + + use phf_generator::generate_hash_rayon; + + use super::gen_vec; + + fn bench_hash(b: &mut Bencher, len: &usize) { + let vec = gen_vec(*len); + b.iter(|| generate_hash_rayon(&vec)) + } + + fn gen_hash_small(c: &mut Criterion) { + let sizes = vec![0, 1, 2, 5, 10, 25, 50, 75]; + c.bench_function_over_inputs("gen_hash_small_rayon", bench_hash, sizes); + } + + fn gen_hash_med(c: &mut Criterion) { + let sizes = vec![100, 250, 500, 1000, 2500, 5000, 7500]; + c.bench_function_over_inputs("gen_hash_medium_rayon", bench_hash, sizes); + } + + fn gen_hash_large(c: &mut Criterion) { + let sizes = vec![10_000, 25_000, 50_000, 75_000]; + c.bench_function_over_inputs("gen_hash_large_rayon", bench_hash, sizes); + } + + fn gen_hash_xlarge(c: &mut Criterion) { + let sizes = vec![100_000, 250_000, 500_000, 750_000, 1_000_000]; + c.bench_function_over_inputs("gen_hash_xlarge_rayon", bench_hash, sizes); + } + + criterion_group!(benches, gen_hash_small, gen_hash_med, gen_hash_large, gen_hash_xlarge); +}
\ No newline at end of file |