use criterion::{black_box, criterion_group, criterion_main, Criterion};
use trace_id::TraceId;
fn bench_id_generation(c: &mut Criterion) {
c.bench_function("TraceId::new", |b| {
b.iter(|| {
black_box(TraceId::new());
})
});
}
fn bench_id_validation(c: &mut Criterion) {
let valid_id = "0af7651916cd43dd8448eb211c80319c";
let invalid_id_length = "invalid-trace-id-that-is-longer";
let invalid_id_chars = "0af7651916cd43dd8448eb211c80319g"; let invalid_id_zero = "00000000000000000000000000000000";
let mut group = c.benchmark_group("TraceId::from_string_validated");
group.bench_function("valid_id", |b| {
b.iter(|| {
black_box(TraceId::from_string_validated(black_box(valid_id)));
})
});
group.bench_function("invalid_length", |b| {
b.iter(|| {
black_box(TraceId::from_string_validated(black_box(invalid_id_length)));
})
});
group.bench_function("invalid_chars", |b| {
b.iter(|| {
black_box(TraceId::from_string_validated(black_box(invalid_id_chars)));
})
});
group.bench_function("all_zeros", |b| {
b.iter(|| {
black_box(TraceId::from_string_validated(black_box(invalid_id_zero)));
})
});
group.finish();
}
criterion_group!(benches, bench_id_generation, bench_id_validation);
criterion_main!(benches);