Ubuntu 下 Rust 编译加速实用清单
一 高性价比优化 立竿见影
export RUSTC_WRAPPER=sccache,并在 ~/.cargo/config.toml 写入 [build] rustc-wrapper = "sccache"。社区实测重复构建普遍可下降约70%,CI 建议同时缓存 $CARGO_HOME/registry 与 $CARGO_HOME/target。[target.x86_64-unknown-linux-gnu]
linker = "clang"
rustflags = ["-C", "link-arg=-fuse-ld=lld"] # 或 mold: "-C", "link-arg=-fuse-ld=mold"
链接阶段通常是瓶颈之一,更换后可显著缩短链接耗时。[build] jobs = N(N 建议为 CPU 核数,开发时可保留 2 核给编辑器/终端:cargo build -j $(nproc --ignore=2)),incremental = true(稳定版已默认开启,显式声明更稳妥)。opt-level = 0、debug = 1(仅行表,通常比 full 快约30%)、lto = false、codegen-units = 16;把重量优化留给 --release。cargo install cargo-machete && cargo machete。cargo check,或用 cargo watch -c 在文件变动时自动 check,获得秒级反馈。二 进阶手段 进一步压榨性能
RUSTFLAGS="-Z threads=8" cargo +nightly build,或在 ~/.cargo/config.toml 中设置 [build] rustflags = ["-Z", "threads=8"]。rustup toolchain install nightly && rustup component add rustc-codegen-cranelift --toolchain nightly,随后 cargo +nightly build。cargo test,并行模型更高效,实测可快至60%。cargo build --timings 查看各 crate 编译耗时,定位“拖后腿”的依赖。cargo rustc -- -Zself-profile 生成火焰图/Chrome trace,深入分析前端/后端瓶颈。三 项目与工程化改造 长期收益
default-features = false,只启用需要的功能,减少编译与链接产物。build.rs:将 C/C++ 依赖改为预编译静态库或系统库,避免在每次构建中重复执行重量级构建脚本。四 CI 一键复制配置
name: Fast Rust CI
on: [push, pull_request]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Rust stable
uses: dtolnay/rust-toolchain@stable
- name: Cache cargo + sccache
uses: mozilla-actions/sccache-action@v0.0.6
with:
version: "v0.8.2"
- name: Rust cache
uses: Swatinem/rust-cache@v2
- name: Build
run: cargo build --all-features
env:
RUSTC_WRAPPER: sccache
CARGO_INCREMENTAL: 1
SCCACHE_GHA_ENABLED: true
- name: Test
run: cargo nextest run --all-features
团队/大规模 CI 可进一步考虑自建 sccache 分布式缓存 或远程后端,提高跨机复用率。五 常见避坑与快速排查
opt-level=3 或 lto=true 放到开发配置;这会显著放大编译与链接时间。build.rs 执行重型 C/C++ 构建;优先预编译为静态库。Cargo.lock 提交到版本库,避免 CI 重复解析依赖与下载。target 目录(会增加磁盘占用),并确保使用最新稳定版工具链与组件。