4 ms·
Maybe I'm holding it wrong, but mold isn't faster at all if you're using LTO, which you probably should be.
by secondcoming 2y ago
Maybe I'm holding it wrong, but mold isn't faster at all if you're using LTO, which you probably should be.
- 0x457 2y agoI think we're talking about non-release builds here. In those, you don't want to use LTO, you just want to get that binary as fast as possible.
- deleted 2y ago[deleted]
- compiler-guy 2y agoMold will be faster than LLD even using LTO, but all of its benefits will be absolutely swamped by the LTO process, which is, more or less, recompiling the entire program from high-level LLVM-IR. That's extremely expensive and dwarfs any linking advantages. So the benefit will be barely noticable. As another comment points out, LTO should only be used when you need a binary optimized to within an inch of its life, such as a release copy, or a copy for performance testing.
- paulddraper 2y agoUsername checks out. And factual.
- saagarjha 2y agoI'm waiting for 'linker-guy to weigh in, personally.
- Arelius 2y agoYeah, if you're development process requires LTO you may be holding it wrong.... Specifically, if LTO is so important that you need to be using it during development, you likely have a very exceptional case, or you have some big architectural issues that are causing much larger performance regressions then they should be.
- benatkin 2y agoBeing able to choose a middle ground between development/debug builds and production builds is becoming increasingly important. This is especially true when developing in the browser, when often something appears to be slow in development mode but is fine in production mode. WebAssembly and lightweight MicroVMs are enabling FaaS with real time code generation but the build toolchain makes it less appealing, when you don't want it to take half a minute to build or to be slow.
- jcalvinowens 2y agoIf you're debugging, and your bug only reproduces with LTO enabled, you don't have much of a choice...
- paulddraper 2y agoSure, for that 1% of the time.
- IshKebab 2y ago> you're development process requires LTO you may be holding it wrong.... Not necessarily. LTO does a very good job of dead code elimination which is sometimes necessary to fit code in microcontroller memory.
- josephg 2y ago> Yeah, if you're development process requires LTO you may be holding it wrong.... I spent a few months doing performance optimisation work. We wanted to see how much performance we could wring out of an algorithm & associated data structures. Each day I’d try and brainstorm new optimisations, implement them, and then A/B test the change to see how it actually affected performance. To get reliable tests, all benchmarks were run in release mode (with all optimisations - including LTO - turned on).
- benatkin 2y agoAgreed. Both fast and small are desirable for sandboxed (least authority) isomorphic (client and server) microservices with WebAssembly & related tech.
- account42 2y agoYou should be using LTO where incremental build times are a concern, i.e. for development builds. And for realease builds link time is hardly a concern.