我正在尝试分析我的程序。所以我用 -prof
和 -auto-all
标志编译它并用 -P
运行以获得详细的分析报告:
$ ghc --make -prof -auto-all Test.hs
$ ./Test +RTS -P
这是一份分析报告:
COST CENTRE MODULE no. entries %time %alloc
main Main 266 1 0.0 0.0
run Main 273 21845 99.3 99.7
sz Main 274 21844 0.0 0.0
size Main 268 21845 0.7 0.3
似乎
run
消耗了所有的时间和内存。它调用了来自各种库的许多函数,我很确定大部分时间都花在其中一个上,但我无法弄清楚是哪个。我怎样才能得到更详细的报告?我希望手动放置大量
SCC
注释不是唯一的方法。更新 。现在我通过将库源复制到我的程序目录来“解决”这个问题。这允许 GHC 将它们视为程序的一部分,而不是外部库。
最佳答案
这是一个 gprof 类型的分析器 - pretty weak, for these reasons.
您可以使用 GHCi 以与查找无限循环相同的方式来查找性能问题, by this technique 以这种方式:
任何性能问题和无限循环之间的唯一区别是——无限循环浪费了 100% 的时间,而性能问题浪费了较少的时间。
所以你可能不得不闯入它几次。
关于haskell - 如何强制 ghc 的探查器深入到库中?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5196903/