Remix.run Logo
magicalhippo 12 hours ago

I'm well aware of the joys of optimization, I just haven't come across someone building multi-GB executables at a pace where milliseconds spent linking mattered.

To me that's an exotic workload which sounds interesting, hence why I'm curious.

NobodyNada 11 hours ago | parent [-]

Well, keep in mind that the full linking step has to be done at the end of an incremental build. So if you're a developer actively working on a project with a 4GB executable, that linking time is part of your edit-compile-test cycle, and you have to wait for it every time you change a line of code.

The benchmarks on mold's README show that GNU gold takes 33 seconds to link clang, whereas mold takes 1.3 seconds. If you're a developer working on Clang, that's a pretty serious productivity improvement.

kardos 26 minutes ago | parent [-]

> Well, keep in mind that the full linking step has to be done at the end of an incremental build.

Does it have to be that way? For an incremental build, particularly in the "not much has changed except some function contents" case, is it plausible to reuse the previous linker output and update the incrementally updated part?