Lien 3x plus vite avec gold
Depuis GHC 7.8, vous pouvez dire GHC et de la cabale (au moment de l'exécution, sans avoir à recompiler le GHC) de lien avec GNU or.
Vous avez besoin dans votre .cabal
le fichier:
library:
ghc-options: -optl-fuse-ld=gold
ld-options: -fuse-ld=gold
executable myExecutable
ghc-options: -optl-fuse-ld=gold
ld-options: -fuse-ld=gold
(Remarque vous pouvez passer ces drapeaux stack
/cabal
/Setup.hs
sur la ligne de commande au lieu de coder en dur dans le .cabale fichier afin de ne pas réduire la portabilité de l'emballage.)
Pour moi, c'est 3.5x
plus rapide, ce qui réduit le total de la liaison d'un projet à partir de 150 secondes à 40 secondes.
Mise à jour: Lien 10x plus vite avec lld
Voir https://github.com/nh2/link-with-lld-example pour un exemple complet; les principales parties:
library
ghc-options: "-pgmP clang" "-pgmc clang" "-pgma clang" "-pgml clang" "-optl-fuse-ld=lld"
ld-options: -fuse-ld=lld
executable myExecutable
ghc-options: "-pgmP clang" "-pgmc clang" "-pgma clang" "-pgml clang"
ld-options: -fuse-ld=lld
Comparaison des temps de lien pour l'exécutable final de lien fois mon projet:
ld 124 seconds
gold 36 seconds
lld 11 seconds