LLVM's LLD Linker Gets Faster Performance (Parallelized ICF)
As pointed out by this week's LLVM Weekly, the LLVM Linker (LLD) received a rather nice performance optimization this past week.
LLD's Identical Code Folding (ICF) optimization is now parallelized. ICF is about identifying multiple functions with the same contents and merging them together, in order to save space in the binary.
LLD's ICF pass on Chromium previously took 7.9 seconds and now it's down to 1.06 seconds. LLD is now able to link a Chromium binary with ICF enabled in 10.28 seconds compared to 40.94 seconds with the GNU Gold linker. Details via this review.
When the parallel ICF was ported to COFF, it's a big win too with LLD formerly taking 11.73 seconds to link Clang while now it's down to 6.94 seconds while Microsoft MSVC link takes 83 seconds.
Quite the win now when using LLD with ICF enabled. This though is just one of many improvements LLD has been working on recently, as well as considering multi-threading by default and other optimizations as LLD becomes a suitable, production-ready linker alternative.
LLD's Identical Code Folding (ICF) optimization is now parallelized. ICF is about identifying multiple functions with the same contents and merging them together, in order to save space in the binary.
LLD's ICF pass on Chromium previously took 7.9 seconds and now it's down to 1.06 seconds. LLD is now able to link a Chromium binary with ICF enabled in 10.28 seconds compared to 40.94 seconds with the GNU Gold linker. Details via this review.
When the parallel ICF was ported to COFF, it's a big win too with LLD formerly taking 11.73 seconds to link Clang while now it's down to 6.94 seconds while Microsoft MSVC link takes 83 seconds.
Quite the win now when using LLD with ICF enabled. This though is just one of many improvements LLD has been working on recently, as well as considering multi-threading by default and other optimizations as LLD becomes a suitable, production-ready linker alternative.
7 Comments