Browse Source

cuckoo: extend benchmarks

Lennart Braun 2 years ago
parent
commit
31ff2b47b8
1 changed files with 29 additions and 15 deletions
  1. 29 15
      cuckoo/benches/cuckoo.rs

+ 29 - 15
cuckoo/benches/cuckoo.rs

@@ -1,15 +1,25 @@
-use criterion::{black_box, criterion_group, criterion_main, Criterion};
+use criterion::{black_box, criterion_group, criterion_main, BenchmarkId, Criterion};
 use cuckoo::cuckoo::{Hasher, Parameters};
 use cuckoo::hash::AesHashFunction;
 
+const LOG_DOMAIN_SIZES: [u32; 4] = [8, 12, 16, 20];
+
 pub fn bench_hash_domain_into_buckets(c: &mut Criterion) {
-    let number_inputs = 1_000;
-    let parameters = Parameters::<AesHashFunction<u32>, _>::sample(number_inputs);
-    let hasher = Hasher::new(parameters);
-    let domain_size = 100_000;
-    c.bench_function("Hasher<AesHashFunction>.hash_domain_into_buckets", |b| {
-        b.iter(|| hasher.hash_domain_into_buckets(black_box(domain_size)))
-    });
+    for log_domain_size in LOG_DOMAIN_SIZES {
+        let log_number_inputs = log_domain_size / 2;
+        let parameters = Parameters::<AesHashFunction<u32>, _>::sample(1 << log_number_inputs);
+        let hasher = Hasher::new(parameters);
+        c.bench_with_input(
+            BenchmarkId::new(
+                "Hasher<AesHashFunction>.hash_domain_into_buckets",
+                log_domain_size,
+            ),
+            &log_domain_size,
+            |b, &log_domain_size| {
+                b.iter(|| hasher.hash_domain_into_buckets(black_box(1 << log_domain_size)))
+            },
+        );
+    }
 }
 
 pub fn bench_position_map(c: &mut Criterion) {
@@ -80,13 +90,17 @@ pub fn bench_position_map(c: &mut Criterion) {
 }
 
 pub fn bench_cuckoo_hash_items(c: &mut Criterion) {
-    let number_inputs = 1_000;
-    let parameters = Parameters::<AesHashFunction<u32>, _>::sample(number_inputs);
-    let hasher = Hasher::new(parameters);
-    let items: Vec<u64> = (0..number_inputs as u64).collect();
-    c.bench_function("Hasher<AesHashFunction>.cuckoo_hash_items", |b| {
-        b.iter(|| hasher.cuckoo_hash_items(black_box(&items)))
-    });
+    for log_domain_size in LOG_DOMAIN_SIZES {
+        let log_number_inputs = log_domain_size / 2;
+        let parameters = Parameters::<AesHashFunction<u32>, _>::sample(1 << log_number_inputs);
+        let hasher = Hasher::new(parameters);
+        let items: Vec<u64> = (0..1 << log_number_inputs).collect();
+        c.bench_with_input(
+            BenchmarkId::new("Hasher<AesHashFunction>.cuckoo_hash_items", log_domain_size),
+            &log_domain_size,
+            |b, _| b.iter(|| hasher.cuckoo_hash_items(black_box(&items))),
+        );
+    }
 }
 
 criterion_group!(