比 Ninja 还快:build2 逼近构建系统的「光速」
来源:build2.org — 2026-08-05
📋 概述
Boris Kolpackov 用 Xerces-C++(299 个 C++ 翻译单元)做了一次 build2 与 Ninja 的公平对决。Ninja 从零完整构建耗时 3.4 秒,但别忘了 CMake 生成 Ninja 构建文件还要 15.6 秒;而原生 build2 用相同的编译参数是 3.8 秒,仅慢约 11%。关闭 build2 更精确的基于 token 校验和的变更检测后降到与 Ninja 持平,再关掉文件缓存压缩后反而比 Ninja 快 2.2%,而 build2 在这同时仍承担了 Ninja 不做的大量工作(比如在构建阶段生成并正确追踪 XercesVersion.hpp)。
🔑 核心要点
- 指出 Ninja 的公平性来自baked-in 构建逻辑与极简变更追踪
- 公平对决下 build2 比 Ninja 慢约 11%,差距不大
- 关闭更精确的变更检测后 build2 与 Ninja 持平(3.4s)
- 再关文件缓存压缩后 build2 反而快 2.2%,同时做更多事
- 对比显出现代原生构建系统在生成阶段也能把活干在构建里
💡 金句
Ninja 并非 100% 公平的基准:它的公平性来自生成它的工具「烘烤」进去的构建逻辑。
👍 0
👎 0
← 返回 Lobsters 首页