haskell - 使用 GHC 仅分析单个功能(或成本中心)

标签 haskell profiling ghc

我正在尝试使用 GHC 分析工具分析一些 Haskell 代码。然而,我最感兴趣的成本中心目前由一堆我并不真正关心的初始化代码主导。

我的代码看起来大致如下:

main = do
  x <- lotsOfInitialization
  print $ {-# SCC "myCostCenter" #-} interestingPart x

在我的实际代码中,lotsOfInitialization部分占用了大约 98% 的时间,因此很难以任何粒度查看 interestingPart 内部发生了什么.

我认为只在一个地方注释(而不是使用 -fprof-auto )就足够了,但是我得到的报告仍然显示了所有的函数调用。

我还在 x 上尝试了严格注释。 ,但这似乎并没有改变任何东西。

有没有办法告诉 GHC 忽略初始化代码,或者只关注我想要的部分?

最佳答案

根据ghc manual您可以通过例如在某些成本中心进行堆分析使用 -hc⟨name⟩ 或 -hy⟨type⟩。

不过,我找不到对时间分析执行类似操作的解决方案。

编辑:

我确实设法找到了一种方便地完成分配和时间分析所需的方法。如果您使用 profiteur .prof 的可视化工具文件,您可以将某个成本中心的性能概况视为格式良好的树形图。

关于haskell - 使用 GHC 仅分析单个功能(或成本中心),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37263009/

相关文章:

git - 如何在 git 中获取或 pull 命令后立即执行命令?

parsing - 为什么使用 lambda 而不是模式匹配?

c - 如何调用函数 glMultiDrawElements::GLenum -> GHC.Ptr.Ptr GLsizei -> GLenum -> GHC.Ptr.Ptr (GHC.Ptr.Ptr a) -> GLsizei -> IO ()

mysql - 如何清除 MySQL 查询配置文件

javascript - Mac OS X Yosemite 中的 Node.js dtrace 错误

haskell - 强制 ghc 导入隐藏模块

haskell - 为什么我不能仅使用 Functor/Applicative 约束来实现这些函数?

haskell - 详尽定义的功能中的非详尽模式

java - 是否收集了未使用的 JPA 实体垃圾?为什么?

haskell - 使用 DataKinds - 种类不匹配错误