在GHC中自动分配成本中心

时间:2012-07-31 19:23:25

标签: haskell profiling ghc

我正在使用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

显然我做错了什么?

1 个答案:

答案 0 :(得分:6)

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

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

注意:成本中心注释可能会对性能产生很大影响,因此-auto-all分配。 -fprof-auto仅应用于当前正在检查的库中,其他库应使用-auto resp给出的用于分析的成本中心注释较少进行编译。 -fprof-auto-top-fprof-auto-exported