我正在尝试分析我的程序。所以我用 -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/

10-13 09:47