Debian上Rust项目的性能测试实践
一 环境准备
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh,然后执行 source $HOME/.cargo/env。sudo apt-get install linux-tools-common linux-tools-$(uname -r)。sudo apt-get install valgrind。cargo build --release,基准与剖析均建议基于该构建进行。二 基准测试 Criterion.rs(推荐)
[dev-dependencies] 中加入:criterion = "0.5"。use criterion::{black_box, criterion_group, criterion_main, Criterion};
fn fibonacci(n: u64) -> u64 {
match n {
0 | 1 => n,
n => fibonacci(n - 1) + fibonacci(n - 2),
}
}
fn bench_fibonacci(c: &mut Criterion) {
c.bench_function("fib 20", |b| b.iter(|| fibonacci(black_box(20))));
}
criterion_group!(benches, bench_fibonacci);
criterion_main!(benches);
cargo bench。三 系统级性能剖析与火焰图
perf record -g ./target/release/your_programperf report -n --stdioperf record -g ./target/release/your_program
perf script | ./stackcollapse-perf.pl | ./flamegraph.pl > perf.svg
cargo install flamegraphcargo flamegraph --bin your_programvalgrind --tool=memcheck --leak-check=full ./target/debug/your_program(更偏向内存错误与泄漏,对 CPU 性能影响大,建议对调试构建使用)。四 服务与接口压力测试
wrk -t4 -c100 -d30s http://127.0.0.1:8080/ab -n 10000 -c 100 http://127.0.0.1:8080/五 提升测试有效性的实践