Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Motivation for this change
ld.gold
has been known to speed up GHC compilations for some time, and is often recommended whenever linking time becomes unreasonably big. @bgamari and I thought it might be a good idea to use it by default for all GHCs that are built in nixpkgs. Both have bugs butld.gold
tends to be reliable and consistently faster.I also have concrete numbers to back this up, at the end of this comment.
Things done
sandbox
innix.conf
on non-NixOS)nix-shell -p nix-review --run "nix-review wip"
./result/bin/
)nix path-info -S
before and after)First, a tiny script that measures the time that it takes just to link aeson's
Setup.hs
, producing aSetup
executable, with ld.gold and ld.bfd,10 times over, recording the timings (all in seconds).Here's a table with just the system times reported. The two files with system and user times are available at the end.
Second, a script that measures the time it takes to compile
ghc-events-analyze
(alone, without its deps) withld.bfd
andld.gold
. Like before, script & raw data available at the end.Those numbers follow a clear trend that we have been seeing during our work on/around GHC, but I could definitely collect more data points if this is not convincing enough.
aeson Setup.hs data:
bfd.txt
gold.txt
ghc-events-analyze compilation data:
bfd-gea.txt
gold-gea.txt