mirror of
https://github.com/tokio-rs/tokio.git
synced 2026-08-28 00:00:11 +02:00
Extracted from #1152 This makes it possible to run benchmarks on stable + gives more statistical reliability.
43 lines
1.1 KiB
Rust
43 lines
1.1 KiB
Rust
#[macro_use]
|
|
extern crate tokio_trace;
|
|
#[macro_use]
|
|
extern crate log;
|
|
#[macro_use]
|
|
extern crate criterion;
|
|
|
|
use criterion::Criterion;
|
|
use tokio_trace::Level;
|
|
|
|
fn criterion_benchmark(c: &mut Criterion) {
|
|
c.bench_function("span_no_subscriber", |b| {
|
|
b.iter(|| {
|
|
span!(Level::TRACE, "span");
|
|
})
|
|
});
|
|
c.bench_function("bench_log_no_logger", |b| {
|
|
b.iter(|| {
|
|
log!(log::Level::Info, "log");
|
|
});
|
|
});
|
|
c.bench_function("bench_costly_field_no_subscriber", |b| {
|
|
b.iter(|| {
|
|
span!(
|
|
Level::TRACE,
|
|
"span",
|
|
foo = tokio_trace::field::display(format!("bar {:?}", 2))
|
|
);
|
|
});
|
|
});
|
|
// This is just included as a baseline.
|
|
c.bench_function("bench_no_span_no_subscriber", |b| {
|
|
b.iter(|| {});
|
|
});
|
|
c.bench_function("bench_1_atomic_load", |b| {
|
|
use std::sync::atomic::{AtomicUsize, Ordering};
|
|
let foo = AtomicUsize::new(1);
|
|
b.iter(|| foo.load(Ordering::Relaxed));
|
|
});
|
|
}
|
|
criterion_group!(benches, criterion_benchmark);
|
|
criterion_main!(benches);
|