Skip to content

效能基準測試 (Benchmarks)

Fish 專為高效、低延遲的多語言任務編排與無鎖並發而設計。

效能對比概覽

⚠️ 測試範圍與方法說明: 下表為在單台測試機上的合成基準測試數據,反映特定樣本多語言工作區下的測量參考值,並非任何環境下的絕對結論。

ℹ️ 架構定位說明: Fish 定位為零設定多語言任務編排工具(在工作流程層級類似於 Turborepo、Nx 或 Pants),而非編譯器底層的細粒度密封動作圖(如 Bazel 或 Buck2)。對比數據主要體現流水線調度與本地快取效率。

建置系統冷建置 (100 包)熱快取重構記憶體佔用架構定位類型
Fish 0.6.018.4s0.01s (Cache Hit)~24 MBZero-Config Polyglot Task Runner
Turborepo24.2s0.05s~85 MBJS/TS Focused Task Runner
Nx31.8s0.12s~180 MBMonorepo Task Runner
Bazel22.1s0.04s~650 MB (JVM)Fine-Grained Hermetic Build System
Cargo (僅 Rust)42.6s0.85s~120 MBNative Language Package Manager

調度器開銷預算 (< 100µs)

Fish 設定了嚴格的 每次任務分派決策 < 100µs 開銷預算。透過 Criterion 微基準測試在不同圖規模(50、200 和 1,000 個任務)下進行驗證:

圖規模拓撲排序就緒佇列計算任務調度決策開銷
50 nodes< 5 µs< 2 µs< 12 µs
200 nodes< 18 µs< 7 µs< 28 µs
1,000 nodes< 95 µs< 35 µs< 75 µs

同類調度模型對比測試 (Fish vs Ninja vs Bazel 模型)

peer_comparison 基準測試套件提供了可重複的多語言 Monorepo 模擬(代碼生成、C++、Rust、TypeScript、Go 編譯、連結及整合測試):

  • Fish Work-Stealing: 動態工作竊取佇列與基於相依尾長的啟發式優先順序。
  • Fish 關鍵路徑優先: 優先調度最長相依鏈,消除閒置等待。
  • 模擬 Ninja 波前執行: 按拓撲層級的逐層分批並行。
  • 模擬 Bazel 階段屏障: 嚴格的階段同步屏障分步執行。

執行基準測試

執行整個工作區的自動化基準測試:

bash
cargo bench --workspace

執行 fish-scheduler 專項測試:

bash
# 測試調度器開銷與關鍵路徑演算法
cargo bench -p fish-scheduler --bench scheduler_performance

# 執行同類建置系統調度矩陣對比
cargo bench -p fish-scheduler --bench peer_comparison