My project structure:
project_root
├── benches
│ └── my_benchmark.rs
The my_benchmark.rs content:
use criterion::{criterion_group, criterion_main, Criterion};
fn factorial(n: u64) -> u64 {
(1..=n).product()
}
fn my_benchmark(c: &mut Criterion) {
c.bench_function("factorial 20", |b| b.iter(|| factorial(20)));
}
criterion_group!(benches, my_benchmark);
criterion_main!(benches);
However, once I run the cargo bench
I get this output:
Finished `bench` profile [optimized] target(s) in 0.07s
Running unittests src/main.rs (target/release/deps/fwaas-cbcff0a631d9e180)
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running benches/my_benchmark.rs (target/release/deps/my_benchmark-eddc0eabec0786a7)
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
So, it seems like the actual benchmark gets ignored.
target/ dir content looks like this:
ls target/
CACHEDIR.TAG release tmp
Used criterion in my dependencies:
[dev-dependencies]
criterion = "0.5"
Alongside cargo version:
cargo 1.82.0