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_bulk_insert(c: &mut Criterion) {
let mut group = c.benchmark_group("BulkInsert");
let mut r = rng(0);
for size in [0usize, 1_000, 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)| black_box(set.bulk_insert(batch).unwrap()),
criterion::BatchSize::SmallInput,
);
});
}
group.finish();
}
criterion_group!(benches, bench_bulk_insert);
criterion_main!(benches);