mold: 並列リンカがリンク時間を最大112倍高速化
mold: A Parallel Linker

ソフトウェアビルドの最終段階であるリンクは、大規模なC++プログラムでは依然としてボトルネックとなっています。既存のリンカは限られた並列性しか活かせず、CPUコアの多くがアイドル状態です。本論文では、Unix/Linux向けリンカ「mold」を紹介します。moldはリンク処理全体に体系的にデータ並列性を適用し、シンボル解決とアーカイブ処理の絡み合いなど、既存リンカのスケーラビリティを阻む構造的制約を、クリーンな設計で切り離すことで克服します。実際の大規模プログラムでは、マルチギガバイトのデバッグバイナリを数秒(多くの場合1秒未満)でリンクし、最先端のlldリンカより2.4〜16.1倍、従来のGNU ldより最大112倍高速です。アブレーション研究により、高速化は単一の最適化によるものではなく、全パスの並列化の累積効果であることが示されました。
moldは、マルチギガバイトのデバッグバイナリを数秒で、しばしば1秒未満でリンクし、最先端のlldリンカより2.4〜16.1倍、従来のGNU ldより最大112倍高速です。
HNでの議論
19- gabeochoa
Ruiの古いツイートだけど、最近のzigのビデオで見かけて、その考え方がとても気に入った:
(https://x.com/rui314/status/1560277403787997185)
> 私の戦略は、コモンズの価値を例えば100上げて、その見返りとして1を得るというものだ。だから、辛抱してほしい。moldを無料で使いたいなら、ただ使えばいい。これが私のオープンソースビジネス戦略だ。
MoldとRuiの幸運を祈っている。
- dochtman
Wildは現時点でmoldよりもかなり速い:
https://github.com/wild-linker/wild
(ベンチマークはREADMEにあります。)
- lrvick
私たちはStagex Linuxディストリビューションでデフォルトのリンカとしてmoldを使っている。それによって全体のビルド時間が数時間短縮された。