Haskell:调试堆栈项目的长编译时间

标签 haskell haskell-stack

我目前正在使用 Stack 构建一个项目,总共大约 80 个模块和 13,000 行代码。目前,编译我的类型文件需要大约 3 分钟,这是 Not Acceptable ——它阻止我通过堆栈 ghci 快速测试我的代码。它还显着减慢了许多事情的速度:例如,与同行结对编程或咨询专家。

我希望能够弄清楚为什么编译需要这么长时间,以及我可以做些什么来加快它。有什么方法可以分析编译时间吗?

此外,我如何判断是堆栈还是 ghc 慢?

我知道设置 -O0,尽管这似乎对编译时间没有帮助。我也知道 TemplateHaskell 和 Typeclass Resolution 可能需要一段时间——有什么办法可以更好地解决这些问题需要多长时间?

注意:我看过Speed up compilation in GHC ,但那是从 2013 年开始的,hdevtools 目前不适用于我的设置。

最佳答案

如果这个问题仍然相关,你可以试试这个:

stack ghci --fast --no-build --ghc-options="-fbyte-code"

IIRC 使用它让我获得了最快的结果 stack ghci .

如果这还不够,您可以查看 --ghc-options="-dshow-passes" 的方向。 .我本人目前也在朝着这个方向努力,以尝试加快构建/ghci-reload。

关于Haskell:调试堆栈项目的长编译时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35375143/

相关文章:

templates - 通过 HStringTemplate 生成带有一些逻辑的模板

haskell - 模式匹配 Haskell 列表

c - 使用 FFI 的带有 size_t 的 printf

haskell - 如何使用 HPC 和 Stack 生成覆盖范围叠加?

haskell - 使用堆栈时如何查找.cabal中的依赖项

haskell - 对 Haskell 中的柯里化(Currying)和无点风格的困惑

sockets - Haskell 'timeout' 函数在应用于 'connect' 时不起作用

haskell - 如何在本地安装 Haskell Stack?

haskell - 如何定义由其他数据类型组成的数据类型?

haskell - 如何将 stack 项目转换为 cabal 项目?