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

Haskell: Debugging Long Compilation Times on Stack Projects

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

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

另外,我怎么知道是stack还是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" 的方向。我自己目前也在朝这个方向看,试图加快 build/ghci-reload.