有没有办法用GHC分析每个模块的编译时间?

ins*_*itu 5 haskell ghc

我认为所有内容都在标题中,但要提供更多背景信息.我们有两个70多个软件包,它们的编译时间差异很大:一个是另一个需要两倍的时间(不考虑并行化).我想知道哪些模块花费的时间最多,以便更好地了解造成这种差异的原因.

Mat*_*hid 0

不确定你的意思是 70+ 个还是 70+个模块,但无论如何......

我想不出任何特别简单的方法来做到这一点。您可以尝试准确计算 GHC 将消息写入控制台的时间;我不确定这有多准确。否则,我想您必须找出正确的编译顺序,并手动调用 GHC 一次编译一个模块,并使用操作系统级工具来计算每个编译命令所需的时间。(也许 GHC 的自动 Makefile 生成功能可以有所帮助......)

可以启用分析的情况下编译 GHC 本身,但我认为这在这种情况下没有帮助。(而且工作量相当大。)

FWIW,我也想知道为什么有些模块需要很长时间才能编译,而其他模块几乎是即时的......