use commonware_utils::bitmap::roaring::Bitmap;
use criterion::{criterion_group, Criterion};
use roaring::RoaringTreemap;
use std::hint::black_box;
fn benchmark_contains(c: &mut Criterion) {
let mut group = c.benchmark_group(module_path!());
for count in [1000, 10000, 100000] {
let mut ours = Bitmap::new();
let mut theirs = RoaringTreemap::new();
for i in 0..count {
ours.insert(i * 3);
theirs.insert(i * 3);
}
group.bench_function(format!("count={count} impl=ours"), |b| {
b.iter(|| {
let mut found = 0u64;
for i in 0..count {
if ours.contains(i * 3) {
found += 1;
}
}
black_box(found)
});
});
group.bench_function(format!("count={count} impl=roaring-rs"), |b| {
b.iter(|| {
let mut found = 0u64;
for i in 0..count {
if theirs.contains(i * 3) {
found += 1;
}
}
black_box(found)
});
});
}
group.finish();
}
criterion_group! {
name = benches;
config = Criterion::default().sample_size(50);
targets = benchmark_contains,
}