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