gpt4 book ai didi

haskell - 如何在 Haskell 中使用 GNU 黄金链接器而不是 ld 链接

转载 作者:行者123 更新时间:2023-12-03 08:40:05 26 4
gpt4 key购买 nike

我的 Haskell 项目花费大量时间在 Linking dist/build/myapp/myapp ...以及在执行 TemplateHaskell 时加载共享库代码。

我怀疑这是因为 ld是缓慢的。

如何通过切换到 gold 来改进链接时间链接器?

最佳答案

使用 gold 链接速度提高 3 倍

Since GHC 7.8 ,您可以告诉 GHC 和 cabal(在运行时无需重新编译 GHC)与 GNU gold 链接。

您需要在您的 .cabal文件:

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

(请注意,您可能希望在命令行上将这些标志传递给 stack/ cabal/ Setup.hs,而不是将它们硬编码到 .cabal 文件中,以免降低包的可移植性。)

对我来说是 3.5x更快,将项目的总链接时间从 150 秒减少到 40 秒。

更新:使用 lld 链接速度提高 10 倍

https://github.com/nh2/link-with-lld-example一个完整的例子;关键部位:
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

最终可执行链接的链接时间比较我的项目:
ld   124 seconds
gold 36 seconds
lld 11 seconds

关于haskell - 如何在 Haskell 中使用 GNU 黄金链接器而不是 ld 链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43243322/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com