mold:让链接速度提升百倍的并行新方案
mold: A Parallel Linker

在大型 C++ 项目的构建流程中,链接步骤往往是拖慢开发效率的最大瓶颈。尽管现有工具已尝试并行化,但大多数 CPU 核心在链接时仍处于闲置状态。mold 作为一款全新的 Unix/Linux 链接器,通过彻底重构架构,将数据并行性系统性地应用于整个链接流水线。它成功解耦了符号解析和归档处理等制约扩展性的环节。实测数据显示,mold 能在几秒甚至不到一秒内完成多 GB 调试二进制文件的链接,速度比最先进的 lld 快 2.4 到 16.1 倍,比传统的 GNU ld 快高达 112 倍。这种性能飞跃并非来自单一优化,而是所有步骤并行化累积效应的结果。
速度提升并非来自某一项单一优化,而是源于将所有处理步骤并行化所产生的累积效应。
HN 评论区
17- canucker2016
这里有一个 lwn.net 的链接,指向 Ian Lance Taylor 关于他的 gold linker 的博文(他的博客似乎没有目录,也没有将 linker 相关的博文归类到同一个区域或标签下)。
见 https://lwn.net/Articles/276782/
GNU gold 已被弃用,可能很快就会被移除。(https://www.phoronix.com/news/GNU-Gold-Linker-Deprecated)
但在 2000 年代末,那些博文既是算法优化课,也是软件历史课,因为当时似乎没人愿意站出来清理 GNU ld 几十年积累的技术债。
- gabeochoa
这是 Rui 的一条旧推文,但我最近在一个 zig 视频里看到了,非常认同其中的观点:
(https://x.com/rui314/status/1560277403787997185)
> 我的策略是把公共领域的价值提升 100 倍,然后只拿回 1 作为回报,所以请多包涵。如果你想免费使用 mold,完全可以这么做。这就是我的开源商业模式。
祝 Mold 和 Rui 一切顺利
- dochtman
目前 Wild 比 mold 快了不少:
https://github.com/wild-linker/wild
(基准测试在 README 里。)