use libutils::cage::Cage;
use core::{
hint::black_box,
ops::AddAssign,
};
use criterion::{
criterion_group,
criterion_main,
Criterion,
Throughput
};
const ITERATIONS: u64 = 2u64.pow(15);
fn bench(criterion: &mut Criterion) -> () {
let mut group = criterion.benchmark_group("cage");
group.throughput(Throughput::Elements(ITERATIONS));
group.bench_function("free", |bencher| bencher.iter(free));
group.finish();
}
fn free() -> () {
let cage = Cage::new(0usize);
for _ in 0..ITERATIONS {black_box(cage.free().add_assign(1))}
}
criterion_group!(benches, bench);
criterion_main!(benches);