本文介绍了一种名为mold的新型Unix/Linux链接器,通过系统性地并行化整个链接流程,大幅提升链接速度。相比现有链接器,mold在大型程序上实现了2.4至16.1倍的速度提升,最高可达112倍,显著缩短了编译调试周期。
正文
链接是软件构建过程中的关键步骤,它将编译后的目标文件合并为单个可执行文件或共享库。尽管经过数十年的工程优化,链接时间仍是编辑-编译-调试循环中的主要瓶颈,尤其对于大型C++程序而言。现有链接器仅利用有限的并行性,导致链接期间多数CPU核心处于空闲状态。本文介绍mold——一款Unix/Linux链接器,它在整个链接流程中系统性地应用数据并行。我们首先分析了阻碍现有链接器扩展的架构限制,包括符号解析与归档处理的耦合问题,随后展示了通过全新设计解耦这些环节如何克服上述局限。在大型真实程序测试中,mold能在数秒内(通常不足一秒)完成数GB调试二进制文件的链接。其速度比当前最先进的lld链接器快2.4至16.1倍,比传统GNU ld快达112倍。消融研究表明,性能提升并非源于单一优化,而是所有环节并行化带来的累积效应。
评论
根据评论内容,总结如下:
主要观点与论据:
性能对比:评论1指出Wild链接器速度已超过Mold,并附有基准测试链接。
- 关键引用:"Wild is a decent bit faster than mold at this point"(Wild目前比Mold快不少)
开源商业模式:评论2引用Rui的推文,强调其策略是通过提升公共价值(如开源)来获得少量回报,并祝愿Mold成功。
- 关键引用:"my strategy is to increase the value of commons by, say, 100 and get 1 as a return"(我的策略是将公共价值提升100倍,只取1作为回报)
平台支持需求:评论3表示若Mold支持Windows和Mac,大公司会付费使用。
- 关键引用:"Would use this at a fairly large company if we had windows and Mac support"(如果有Windows和Mac支持,大公司会使用)
实际应用效果:评论4称Mold在Stagex Linux发行版中作为默认链接器,大幅缩短构建时间。
- 关键引用:"It shaved hours off our full tree build time"(节省了数小时的全树构建时间)
创新优势:评论5指出新链接器因能接受差异而实现突破,鼓励尝试新事物。
- 关键引用:"drastic improvements tend to come from new linkers rather than existing ones"(重大改进往往来自新链接器而非现有链接器)
历史背景:评论6提及GNU gold链接器已弃用,并回顾其技术债务问题。
- 关键引用:"GNU gold is deprecated and will probably be removed soon"(GNU gold已弃用,可能很快被移除)
平衡性总结:
- 正面观点:Mold性能优异(评论1、4),开源模式值得肯定(评论2),创新空间大(评论5)。
- 负面/限制:平台支持不足(评论3),历史链接器(如gold)因技术债务被淘汰(评论6)。
- 中立:新链接器需承担风险,但可能带来突破(评论5)。