]> git.proxmox.com Git - rustc.git/blame - vendor/tracing/benches/no_subscriber.rs
New upstream version 1.64.0+dfsg1
[rustc.git] / vendor / tracing / benches / no_subscriber.rs
CommitLineData
f035d41b
XL
1use criterion::{black_box, criterion_group, criterion_main, Criterion};
2use tracing::Level;
3
5e7ed085
FG
4struct FakeEmptySpan {
5 inner: Option<(usize, std::sync::Arc<()>)>,
6 meta: Option<&'static ()>,
7}
8
9impl FakeEmptySpan {
10 fn new() -> Self {
11 Self {
12 inner: None,
13 meta: None,
14 }
15 }
16}
17
18impl Drop for FakeEmptySpan {
19 fn drop(&mut self) {
20 black_box(&self.inner);
21 black_box(&self.meta);
22 }
23}
24
f035d41b
XL
25fn bench_no_subscriber(c: &mut Criterion) {
26 use std::sync::atomic::{AtomicUsize, Ordering};
27
28 let mut group = c.benchmark_group("no_subscriber");
29
30 group.bench_function("span", |b| {
31 b.iter(|| {
5e7ed085
FG
32 let span = tracing::span!(Level::TRACE, "span");
33 black_box(&span);
34 })
35 });
36 group.bench_function("span_enter", |b| {
37 b.iter(|| {
38 let span = tracing::span!(Level::TRACE, "span");
39 let _e = span.enter();
40 })
41 });
42 group.bench_function("empty_span", |b| {
43 b.iter(|| {
44 let span = tracing::span::Span::none();
45 black_box(&span);
46 });
47 });
48 group.bench_function("empty_struct", |b| {
49 b.iter(|| {
50 let span = FakeEmptySpan::new();
51 black_box(&span);
f035d41b
XL
52 })
53 });
54 group.bench_function("event", |b| {
55 b.iter(|| {
56 tracing::event!(Level::TRACE, "hello");
57 })
58 });
59 group.bench_function("relaxed_load", |b| {
60 let foo = AtomicUsize::new(1);
61 b.iter(|| black_box(foo.load(Ordering::Relaxed)));
62 });
63 group.bench_function("acquire_load", |b| {
64 let foo = AtomicUsize::new(1);
65 b.iter(|| black_box(foo.load(Ordering::Acquire)))
66 });
67 group.bench_function("log", |b| {
68 b.iter(|| {
69 log::log!(log::Level::Info, "log");
70 })
71 });
72 group.finish();
73}
74
75fn bench_fields(c: &mut Criterion) {
76 let mut group = c.benchmark_group("no_subscriber_field");
77 group.bench_function("span", |b| {
78 b.iter(|| {
79 black_box(tracing::span!(
80 Level::TRACE,
81 "span",
82 foo = tracing::field::display(format!("bar {:?}", 2))
83 ));
84 })
85 });
86 group.bench_function("event", |b| {
87 b.iter(|| {
88 tracing::event!(
89 Level::TRACE,
90 foo = tracing::field::display(format!("bar {:?}", 2))
91 );
92 })
93 });
94 group.bench_function("log", |b| {
95 b.iter(|| log::log!(log::Level::Trace, "{}", format!("bar {:?}", 2)))
96 });
97 group.finish();
98}
99
100criterion_group!(benches, bench_no_subscriber, bench_fields);
101criterion_main!(benches);