[RSCH] 5 分鐘閱讀OraCore 編輯部

Rust 編譯器 2026 7 月速度成果實作指南

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

分享 LinkedIn
Rust 編譯器 2026 7 月速度成果實作指南

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 雙倉工作區」。

Rust 編譯器 2026 7 月速度成果實作指南
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 基準快照」。

Rust 編譯器 2026 7 月速度成果實作指南
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 縮體這三種手法整理成你自己的效能檢查清單。