mod common;
use common::{keys, persisted_bytes, rng, BATCH, KEY_LENGTH};
use criterion::{criterion_group, criterion_main, BenchmarkId, Criterion, Throughput};
use std::hint::black_box;
fn bench_insert_single(c: &mut Criterion) {
let mut group = c.benchmark_group("InsertSingle");
let mut r = rng(0);
for size in [1_000usize, 10_000, 100_000] {
let base = persisted_bytes(&keys(&mut r, size, KEY_LENGTH));
let fresh = keys(&mut r, BATCH, KEY_LENGTH);
group.throughput(Throughput::Elements(BATCH as u64));
group.bench_with_input(BenchmarkId::from_parameter(size), &size, |b, _| {
b.iter_batched(
|| (common::from_bytes(&base), fresh.clone()),
|(set, batch)| {
for key in batch {
black_box(set.insert(key).unwrap());
}
},
criterion::BatchSize::SmallInput,
);
});
}
group.finish();
}
criterion_group!(benches, bench_insert_single);
criterion_main!(benches);