use criterion::{Criterion, criterion_group};
use std::{
sync::atomic::{AtomicUsize, Ordering},
time::Duration,
};
use vsdb::basic::mapx::Mapx;
fn batch_vs_normal_write(c: &mut Criterion) {
let mut group = c.benchmark_group("vsdb::mapx / batch_vs_normal");
group
.measurement_time(std::time::Duration::from_secs(3))
.sample_size(10);
let i = AtomicUsize::new(0);
let mut db = Mapx::new();
group.bench_function(" normal write 100 ", |b| {
b.iter(|| {
for _ in 0..100 {
let n = i.fetch_add(1, Ordering::Relaxed);
db.insert(&n, &n);
}
})
});
group.bench_function(" batch entry 100 ", |b| {
b.iter(|| {
let mut batch = db.batch_entry();
for _ in 0..100 {
let n = i.fetch_add(1, Ordering::Relaxed);
batch.insert(&n, &n);
}
batch.commit().unwrap();
})
});
group.finish();
}
criterion_group!(benches, batch_vs_normal_write);