用途:当 Rust 或 Cargo 构建缓慢、需要诊断或提速时使用。核心原则是先测量再优化,产出基线耗时、有分析器证据支撑的瓶颈、已应用的配置改动和复测结果,而非堆砌猜测性配置。
主要能力:
- 界定问题:区分冷构建与增量构建、dev/release/CI 配置,并对用户抱怨的场景计时建立基线;若内循环是“编辑→构建→读错误”,优先建议 cargo check(或 bacon、cargo watch -x check)跳过代码生成。
- 测量:使用 cargo build --timings(输出 target/cargo-timings/cargo-timing.html),查看最慢单元、并发图和最终 bin crate 是否占主导;对增量重建中不透明的代码生成与链接块,可用 -Zself-profile 配合 measureme(summarize/flamegraph/crox)、cargo-llvm-lines 或链接器计时深入。
- 分类瓶颈:按证据映射到链接器慢、单一大 crate 串行代码生成、LLVM 代码生成/单态化膨胀、依赖图、release 增量关闭、macOS dsymutil、CI 无缓存等类型。
- 应用修复:按分类从低成本开始,包括配置链接器(Rust 1.90 起 x86_64-unknown-linux-gnu 默认 rust-lld,其他目标可配 lld、mold、wild)、调整 profile(debug="line-tables-only"、依赖 opt-level 覆盖、macOS split-debuginfo="unpacked"、本地 release 开启 incremental)、拆分 workspace、用 cargo-llvm-lines 查找单态化膨胀、nightly 加速器(Cranelift 后端、-Zthreads 并行前端,均为 nightly)、CI 方案(sccache、CARGO_INCREMENTAL=0、专用 ci profile、cargo-chef)。
- 验证报告:复跑同一基线场景,报告基线耗时、每项改动对应的测量依据、新耗时及未采用选项的权衡;无效改动应回退。
限制与硬性规则:未获至少一次测量支持前不得推荐修复;nightly 专属或平台特定选项须明确标注;不得静默修改影响 release 运行时性能的设置(codegen-units、lto、opt-level),须说明权衡并取得同意。运行时性能优化、编译器报错与借用检查问题、非 Rust 构建系统均不在范围内。