Rust 編譯器 2026 7 月速度成果實作指南
這篇教你重現 2026 年 7 月 Rust 編譯器速度測量,檢查 rustdoc、Clippy 與增量編譯的主要優化點。

5.59% 平均 wall time 降幅,說明 2026 年 7 月 Rust 編譯器速度工作最有效的地方。
這篇給 Rust compiler contributor、效能工程師與工具開發者看。照做完,你會拿到一套可重現的 benchmark 工作區、可對照的基準結果,以及能定位 rustdoc、Clippy 和資料結構熱點的實作流程。
開始之前
訂閱 AI 趨勢週報
每週精選模型發布、工具應用與深度分析,直送信箱。不定期,不騷擾。
不會寄垃圾信,隨時可取消。
- Git 帳號與 rust-lang/rust 存取權。
- rustc-perf checkout 與長時間 benchmark 執行權限。
- Rust nightly,或 Rust 1.87+ toolchain。
- Node 不需要;需要的是 Python 3.10+ 與 Valgrind tools。
- Linux 或 macOS 主機,並可執行長時間編譯測試。
- rustdoc 與 Clippy 的 benchmark 資料可讀。
Step 1: 取得編譯器與基準倉庫
先建立本機工作區,讓你能同時改 compiler 與跑 benchmark。這一步的具名產出是「rustc-rustc-perf 雙倉工作區」。

git clone https://github.com/rust-lang/rust.git
git clone https://github.com/rust-lang/rustc-perf.git
cd rust
rustup toolchain install nightly
rustup default nightly你應該看到兩個 repository 都在磁碟上,且 rustc --version 會回傳 nightly 版本。
Step 2: 建立基準測量快照
這一步要先抓「變更前」資料,後面才有可比對的結果。具名產出是「baseline.json 基準快照」。

cd ../rustc-perf
cargo run --release -- bench local ../rust你應該看到 benchmark 執行完成,並產生可重跑、可比較的結果檔案。
Step 3: 重現 rustdoc 加速結果
這一步專看 rustdoc,因為它是這次最明顯的 win。具名產出是「rustdoc 專項結果集」。
cargo run --release -- bench local ../rust --include rustdoc你應該看到 rustdoc 的 wall time 明顯下降;在強結果下,平均降幅會是雙位數,且部分 benchmark 會接近文章提到的 37.92% 與 28% 改善。
Step 4: 用 profiling 找出 Clippy 呼叫熱點
這一步的目的,是把 Clippy 的虛擬呼叫與空方法成本抓出來。具名產出是「Clippy cachegrind 與 dhat 報告」。
valgrind --tool=cachegrind cargo run -p clippy-driver -- test.rs
valgrind --tool=dhat cargo run -p clippy-driver -- test.rs你應該看到高呼叫次數、分支失誤或複製成本偏高;若優化有效,runtime 會往 10% 到 30% 的改善區間移動。
Step 5: 縮小熱資料結構
這一步要把 cache 壓力轉成可量化收益。具名產出是「精簡後的 hot-path struct 定義」。
struct Expr {
kind: ExprKind,
span: Span,
}你應該看到 AST-heavy 工作負載的 cache miss 下降,且 wall time 變快;若型別尺寸跨過 128 bytes 門檻,還可能避開昂貴的 memcpy 搬移。
Step 6: 重新比對整體結果
最後一步是把前後差異整理成可交付報告。具名產出是「before-after 對照摘要」。
cargo run --release -- compare baseline.json latest.json
cargo run --release -- summarize latest.json你應該看到改善、退化與雜訊項目分開列出;整體結果可對照 5.59% 的平均 wall time 降幅,以及排除 rustdoc 後的 2.90% 改善。
| 指標 | 基準/優化前 | 結果/優化後 |
|---|---|---|
| 平均 wall time | 基準期間 | 降低 5.59% |
| rustdoc 平均 wall time | 基準期間 | 降低 37.92% |
| 排除近期變更後的平均 wall time | 基準期間 | 降低 2.90% |
| 部分 rustdoc benchmarks | 基準期間 | 降低 28% |
| Clippy runtime | 基準期間 | 降低 10% 到 30% |
| 最差 new-solver crates | 基準期間 | 降低 40% |
常見錯誤
- 把單次跑分當結論。修法:至少重跑兩次,確認改善能穩定重現。
- 只改演算法,不看資料布局。修法:先量 struct 大小與 cache miss,再判斷是否跨過 128 bytes 門檻。
- 只看自動報告,不做人工 triage。修法:把 noisy benchmark 與小幅變動分開標記,再決定是否合併。
接下來可以看什麼
下一步可追 rustc-perf dashboard、閱讀對應 PR,並把 rustdoc PGO、Clippy pass fusion 與 AST 縮體這三種手法整理成你自己的效能檢查清單。