3

我正在使用 GHC 7.4.1 并尝试分析一段代码。不幸的是,分析器的输出为该功能分配了一个大成本中心main,而不是为每个功能将其分解为多个成本中心。

这是我用来分析代码的过程。我很感激能指出我做错了什么。

首先,重新安装库,启用优化和分析:

cabal install -p -O2

接下来,我重新编译要分析的代码:

ghc -rtsopts -prof -fprof-auto -fforce-recomp --make -O2 "Main.hs"

最后,我使用一些分析选项运行它:

./Main +RTS -K100M -s -p -hy

这是结果:

COST CENTRE MODULE  %time %alloc

main        Main    100.0  100.0

有什么明显的我做错了吗?

4

1 回答 1

6

( ,自 GHC 7.4 起) 选项自动将所有顶级函数(包括未导出的函数)标记为成本中心-auto-all-fprof-auto

但是该选项仅影响当前编译的模块,因此可能还需要使用该选项编译库。为此,请在库的 .cabal 文件中设置ghc-prof-options: -O2 -auto-all(resp. )。-fprof-auto

注意:成本中心注释可能会对性能产生很大影响,因此-auto-all分别。-fprof-auto应该只用于当前正在检查的库,其他库应该使用更少的成本中心注释来编译,如-autoresp 给出的分析。-fprof-auto-top-fprof-auto-exported

于 2012-07-31T19:27:33.630 回答