Links

criterion

How to benchmark functions using criterion library?

use criterion::{black_box, criterion_group, criterion_main, Criterion};
​
pub fn fib(n: i32) -> i32 {
if n > 1 {
fib(n - 1) + fib(n - 2)
} else {
1
}
}
​
pub fn fib_fast(n: i32) -> i32 {
let mut a = 1;
let mut b = 1;
​
for _ in 0..n {
b += a;
a = b - a;
}
​
a
}
​
fn criterion_fib_slow(c: &mut Criterion) {
c.bench_function("fib 10", |b| b.iter(|| fib(black_box(10))));
}
​
fn criterion_fib_fast(c: &mut Criterion) {
c.bench_function("fib_fast 10", |b| b.iter(|| fib_fast(black_box(10))));
}
​
criterion_group!(benches, criterion_fib_fast, criterion_fib_slow);
criterion_main!(benches);
Add following dependencies to the Cargo.toml.
[dev-dependencies]
criterion = "0.3.1"
​
[[bench]]
name = "lib"
path = "src/lib.rs"
harness = false
Benchmarks can be run by cargo bench.
Last modified 3yr ago