haskell - 在GHC中自动分配成本中心

标签 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

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

最佳答案

-auto-all(-fprof-auto,从 GHC 7.4 开始)选项自动标记所有顶级函数,包括未导出的函数,如成本中心。

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

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

关于haskell - 在GHC中自动分配成本中心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11747493/

相关文章:

haskell - Haskell中有没有类似于列表的数据结构,可以在O(1)中替换元素?

haskell - GHC 版本检查代码

haskell - 通过效果进行通用编程

haskell - 如何在 Haskell 中构建非确定性状态 monad?

EclipseFP 根本不工作

c# - 如何查看在不同计算机上创建的 Visual Studio VSP 文件?

asp.net - 分析在 azure 上运行的网站的性能的步骤

java - 如何使用 YourKit Java Profiler 连接到 Java 命令行工具?

Haskell 依赖冲突

java - Haskell 中的 Android 应用程序