构建工具比 Ninja 更快
推荐指数 50.0 NO. 018 · 2026.08.06
发布2026/08/05Score68Comments26
为什么值得看
作者 Boris Kolpackov 指出 Ninja 的极速源于 CMake 等生成器在构建前预计算了大量逻辑,并非 Ninja 本身魔法。他开发的 build2 构建系统将这些预处理步骤纳入构建阶段,实测速度超越 Ninja,同时保持增量构建正确性。
编辑判断
Ninja 被神化多年,但工程团队很少追问它的快是哪种快——是构建图执行快,还是把本该构建阶段做的事偷渡到了生成阶段。Kolpackov 的拆解相当于给行业打了个样:真正公平的 benchmark 应该控制变量,比较同等信息量下的端到端耗时。
对正在自研构建系统或魔改 Bazel/Buck2 的团队,这个思路可以直接迁移。如果你的构建系统依赖外部生成器(比如用 Starlark 生成 BUILD 文件),检查有多少语义分析在构建前完成,可能就是下一个优化窗口。
社区反馈
意见分歧 26 条评论
核心争论:build2 是否真比 Ninja 快,以及构建系统应分离阶段还是整合预处理
相关内容
> And now we are 2.2% faster than Ninja! This claim isn't supported by the author's measurements?
1 - 3.355/3.429 = 0.021581 = 2,2% no?
At least you know it was written by a fallible human. But if you point out my mistake, I will be happy to fix it.