是否有一种方法可以使用GHC对每个模块进行汇编时间



我认为标题中的一切都在标题中,但要提供更多上下文。我们有两个70多个软件包,它们的汇编时间非常不同:一个时间花费的时间是另一个时间的两倍(不考虑并行化)。我想知道哪些模块需要最多的时间才能更好地了解导致这种差异的原因。

GHC在使用-ddump-to-file -ddump-timings构建时,如今可以输出人均计时数据。这会导致使用扩展名.dump-timings的文件写在您的构建目录中(通常用于堆栈的.stack-work,而dist-newstyle为CABAL)。

我写了一个工具来查找所有这些文件并可视化它们:https://github.com/codedownio/time-ghc-modules。

不确定您是否含义70 packages 或70 模块,但无论如何...

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

可能可以通过启用分析来编译GHC本身,但我认为在这种情况下这无济于事。(这是很多工作。)

fwiw,我也想知道为什么有些模块需要很小的永恒来编译,而另一些模块几乎是即时的...

最新更新