CentOS上Rust应用性能优化实战指南
一 编译与链接优化
[profile.release]
opt-level = 3
lto = "thin" # 或 lto = true 获取更强优化(更慢)
codegen-units = 4 # 小项目可设为 1
panic = "abort" # 减少体积与panic展开开销(不需要panic恢复时)
仅在性能分析阶段保留调试符号(便于perf/火焰图),可使用自定义 profile:[profile.bench]
inherits = "release"
debug = true
分析与构建命令示例:cargo build --profile bench
cargo flamegraph --bin your_program
sudo perf record -g target/release/your_program && sudo perf report
说明:LTO 在纯 Rust 项目中收益通常更明显;混合语言(含 C/C++)需配合其它选项;codegen-units=1常带来**5%–15%**性能提升但编译显著变慢;target-cpu=native适合固定硬件的峰值性能场景。二 运行时与并发模型
use rayon::prelude::*;
let sum: i64 = (0..1_000_000).into_par_iter().sum();
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let listener = tokio::net::TcpListener::bind("0.0.0.0:8080").await?;
loop {
let (mut socket, _) = listener.accept().await?;
tokio::spawn(async move {
let mut buf = [0; 1024];
loop {
let n = socket.read(&mut buf).await?;
if n == 0 { return Ok(()); }
socket.write_all(&buf[..n]).await?;
}
});
}
}
三 内存与数据布局
四 系统与部署调优
ulimit -n 65535
按需调整内核网络参数(示例):# /etc/sysctl.conf
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 4096