基准测试
使用 Criterion
toml
[dev-dependencies]
criterion = "0.5"
[[bench]]
name = "my_benchmark"
harness = falserust
▶ Run// benches/my_benchmark.rs
use criterion::{black_box, criterion_group, criterion_main, Criterion};
fn fibonacci(n: u64) -> u64 {
match n {
0 => 0,
1 => 1,
_ => fibonacci(n - 1) + fibonacci(n - 2),
}
}
fn fibonacci_iterative(n: u64) -> u64 {
let mut a = 0;
let mut b = 1;
for _ in 0..n {
let temp = a;
a = b;
b = temp + b;
}
a
}
fn criterion_benchmark(c: &mut Criterion) {
c.bench_function("fib 20 recursive", |b| {
b.iter(|| fibonacci(black_box(20)))
});
c.bench_function("fib 20 iterative", |b| {
b.iter(|| fibonacci_iterative(black_box(20)))
});
}
criterion_group!(benches, criterion_benchmark);
criterion_main!(benches);运行基准测试
bash
# 运行所有基准测试
cargo bench
# 输出
fib 20 recursive time: [12.345 µs 12.456 µs 12.567 µs]
fib 20 iterative time: [0.123 µs 0.124 µs 0.125 µs]