|
@@ -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!(
|