summaryrefslogtreecommitdiffstats
path: root/third_party/rust/phf_generator/benches/benches.rs
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-28 14:29:10 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-28 14:29:10 +0000
commit2aa4a82499d4becd2284cdb482213d541b8804dd (patch)
treeb80bf8bf13c3766139fbacc530efd0dd9d54394c /third_party/rust/phf_generator/benches/benches.rs
parentInitial commit. (diff)
downloadfirefox-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.rs80
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