1 use criterion
::{criterion_group, criterion_main, Criterion}
;
2 use tracing_subscriber
::prelude
::*;
4 fn enter(c
: &mut Criterion
) {
5 let mut group
= c
.benchmark_group("enter");
6 let _subscriber
= tracing_subscriber
::fmt()
7 .with_max_level(tracing
::Level
::INFO
)
10 group
.bench_function("enabled", |b
| {
11 let span
= tracing
::info_span
!("foo");
12 b
.iter_with_large_drop(|| span
.enter())
14 group
.bench_function("disabled", |b
| {
15 let span
= tracing
::debug_span
!("foo");
16 b
.iter_with_large_drop(|| span
.enter())
20 fn enter_exit(c
: &mut Criterion
) {
21 let mut group
= c
.benchmark_group("enter_exit");
22 let _subscriber
= tracing_subscriber
::fmt()
23 .with_max_level(tracing
::Level
::INFO
)
26 group
.bench_function("enabled", |b
| {
27 let span
= tracing
::info_span
!("foo");
28 b
.iter(|| span
.enter())
30 group
.bench_function("disabled", |b
| {
31 let span
= tracing
::debug_span
!("foo");
32 b
.iter(|| span
.enter())
36 fn enter_many(c
: &mut Criterion
) {
37 let mut group
= c
.benchmark_group("enter_many");
38 let _subscriber
= tracing_subscriber
::fmt()
39 .with_max_level(tracing
::Level
::INFO
)
42 group
.bench_function("enabled", |b
| {
43 let span1
= tracing
::info_span
!("span1");
44 let _e1
= span1
.enter();
45 let span2
= tracing
::info_span
!("span2");
46 let _e2
= span2
.enter();
47 let span3
= tracing
::info_span
!("span3");
48 let _e3
= span3
.enter();
49 let span
= tracing
::info_span
!("foo");
50 b
.iter_with_large_drop(|| span
.enter())
52 group
.bench_function("disabled", |b
| {
53 let span1
= tracing
::info_span
!("span1");
54 let _e1
= span1
.enter();
55 let span2
= tracing
::info_span
!("span2");
56 let _e2
= span2
.enter();
57 let span3
= tracing
::info_span
!("span3");
58 let _e3
= span3
.enter();
59 let span
= tracing
::debug_span
!("foo");
60 b
.iter_with_large_drop(|| span
.enter())
63 criterion_group
!(benches
, enter
, enter_exit
, enter_many
);
64 criterion_main
!(benches
);