Skip to content

基准测试

使用 Criterion

toml
[dev-dependencies]
criterion = "0.5"

[[bench]]
name = "my_benchmark"
harness = false
rust
// 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);
▶ Run

运行基准测试

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]