#![allow(
missing_docs,
reason = "No need for API documentation in benchmark code"
)]
use std::hint::black_box;
use alloc_tracker::{Allocator, Session};
use criterion::{Criterion, criterion_group, criterion_main};
#[global_allocator]
static ALLOCATOR: Allocator<std::alloc::System> = Allocator::system();
criterion_group!(benches, entrypoint);
criterion_main!(benches);
fn entrypoint(c: &mut Criterion) {
let mut group = c.benchmark_group("alloc_tracker_overhead");
group.bench_function("baseline_empty", |b| {
b.iter(|| {
black_box(());
});
});
{
let alloc_session = Session::new();
let process_op = alloc_session.operation("empty_process_span");
group.bench_function("process_span_empty", |b| {
b.iter(|| {
let _span = process_op.measure_process();
black_box(());
});
});
let thread_op = alloc_session.operation("empty_thread_span");
group.bench_function("thread_span_empty", |b| {
b.iter(|| {
let _span = thread_op.measure_thread();
black_box(());
});
});
}
group.finish();
}