AMAZINGINDEX.COM 日报快照
51.2
VOL. 2026.08
2026.08.06
← 返回 2026.08.06 日报
日报快照 · Daily Snapshot
NO. 018

构建工具比 Ninja 更快

#ARTICLE HackerNews 2026.08.06
推荐指数 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 快,以及构建系统应分离阶段还是整合预处理

ladams

> And now we are 2.2% faster than Ninja! This claim isn't supported by the author's measurements?

karen_arutyunov

1 - 3.355/3.429 = 0.021581 = 2,2% no?

boris

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.

替代方案: NinjaCMakeMesonGNU configureAutotoolsmaken2
查看原文 →