mirror of
https://github.com/tokio-rs/tokio.git
synced 2025-09-25 12:00:35 +00:00

The test-util feature flag is only intended to be used with tests. However, it is possible to enable it in release mode accidentally. This patch reduces the overhead of `Instant::now()` when the `test-util` feature flag is enabled but `time::pause()` is not called. The optimization is implemented by adding a static atomic flag that tracks if `time::pause()` has ever been called. In `Instant::now()`, the atomic flag is first checked before the thread-local and mutex are accessed.
26 lines
628 B
Rust
26 lines
628 B
Rust
//! Benchmark spawning a task onto the basic and threaded Tokio executors.
|
|
//! This essentially measure the time to enqueue a task in the local and remote
|
|
//! case.
|
|
|
|
#[macro_use]
|
|
extern crate bencher;
|
|
|
|
use bencher::{black_box, Bencher};
|
|
|
|
fn time_now_current_thread(bench: &mut Bencher) {
|
|
let rt = tokio::runtime::Builder::new_current_thread()
|
|
.enable_time()
|
|
.build()
|
|
.unwrap();
|
|
|
|
bench.iter(|| {
|
|
rt.block_on(async {
|
|
black_box(tokio::time::Instant::now());
|
|
})
|
|
})
|
|
}
|
|
|
|
bencher::benchmark_group!(time_now, time_now_current_thread,);
|
|
|
|
bencher::benchmark_main!(time_now);
|