我正在尝试使用GHC分析工具来分析一些Haskell代码。然而,我最感兴趣的成本中心目前由一堆我并不十分关心的初始化代码主导。
我的代码粗略看起来像这样:
main = do
x <- lotsOfInitialization
print $ {-# SCC "myCostCenter" #-} interestingPart x
在我的实际代码中,lotsOfInitialization
部分占用了大约98%的时间,因此很难以任何粒度查看interestingPart
内发生的情况。
我认为只在一个地方进行注释(并且不使用-fprof-auto
)就足够了,但我仍然会收到所有函数调用的报告。
我还在x
上尝试了严格注释,但这似乎没有改变任何内容。
有没有办法告诉GHC忽略初始化代码,或只关注我想要的部分?
答案 0 :(得分:2)
根据ghc manual,您可以通过以下方式对某些成本中心进行堆分析。使用-hc⟨name⟩或-hy⟨type⟩。
我找不到能够为时间分析做类似事情的解决方案。
修改强>
我确实设法找到了一种方便地完成分配和时间分析所需的方法。如果您对.prof
文件使用profiteur可视化工具,则可以将某个成本中心的效果配置文件视为格式良好的树状图。