Rust 在 Linux 上的性能调优实战指南
一 建立可度量的基准
// benches/bench_sum_functions.rs
use criterion::{criterion_group, criterion_main, Criterion};
fn slow(n: usize) -> usize {
let mut s = 0;
for i in 0..n { for j in 0..i { s += j; } }
s
}
fn fast(n: usize) -> usize { n * (n - 1) / 2 }
fn bench(c: &mut Criterion) {
c.bench_function("slow O(n^2)", |b| b.iter(|| slow(1_000)));
c.bench_function("fast O(1)", |b| b.iter(|| fast(1_000)));
}
criterion_group!(benches, bench);
criterion_main!(benches);
运行:cargo bench。在 CI 中对比分支性能,防止回归(如 cargo criterion --compare pr vs main)。二 编译期优化
cargo build --release,开启编译器优化。[profile.release]
opt-level = 3 # 可选 s/z 用于更小体积或特定目标
lto = "fat" # 或 "thin"
codegen-units = 1 # 提升跨模块优化机会(会增加编译耗时)
RUSTFLAGS="-C target-cpu=native" cargo build --release
三 运行时与代码层优化
四 Linux 性能分析与火焰图
sudo perf record -g target/release/your_program
sudo perf report
安装 perf(Debian/Ubuntu):sudo apt install linux-tools-common linux-tools-generic。cargo install flamegraph
RUSTFLAGS="-C target-cpu=native" cargo flamegraph --bin your_program
五 系统层面调优与监控
ulimit -n 65535(或更高),防止“Too many open files”。sudo sysctl -w vm.max_map_count=262144(适用于大量 mmap 的场景)。