我正在尝试分析我的程序。所以我编译它-prof
and -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
手动注释并不是唯一的方法。
Update。现在我通过将库源复制到我的程序目录来“解决”这个问题。这允许 GHC 将它们视为程序的一部分,而不是外部库。
为了使探查器能够区分库函数,必须对它们进行成本中心注释。您可以通过两种方式执行此操作:
- 重新编译感兴趣的库
-p -auto
这样库函数就可以用 SCC 进行注释。
- 在代码中可能耗时的库调用周围插入 SCC 注释。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)