cargo add criterion --dev
[package]
name = "spin"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
[dev-dependencies]
criterion = "0.5.1"
[[bench]]
name = "spinlock_bench"
harness = false
use chan::Channel;
use criterion::{black_box, criterion_group, criterion_main, Criterion};
pub fn criterion_benchmark(c: &mut Criterion) {
c.bench_function("chan", |b| {
b.iter(|| {
black_box({
let mut channel = Channel::new();
let (sender, receiver) = channel.split();
sender.send("Hello, World!");
receiver.receive()
})
})
});
}
criterion_group!(benches, criterion_benchmark);
criterion_main!(benches);
cargo bench
Need sudo as it depends on dtrace.
sudo cargo flamegraph --bench spinlock_bench -- --bench