summaryrefslogtreecommitdiffstats
path: root/tokio-trace/benches/no_subscriber.rs
blob: d5c8090e1b00187dff842cb372f6b0f002fb66a4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#[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);