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

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

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

另外,如何判断堆栈或ghc是否缓慢?

我知道设置-O0,虽然这似乎没有帮助编译时间.我也知道TemplateHaskell和Typeclass Resolution可能需要一段时间 – 有没有什么方法可以让我更好地解决这些问题需要多长时间?

注意:我见过Speed up compilation in GHC,但那是从2013年开始,hdevtools目前无法在我的设置上运行.

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

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

IIRC使用这个让我获得了堆栈ghci最快的结果.

如果这没有足够的帮助,你可以看看-ghc-options =“ – dshow-passes”的方向.我自己也正在寻找这个方向,试图加快build / ghci-reload.

点赞