分析 Haskell 代码但不包括库分析信息

Posted

技术标签:

【中文标题】分析 Haskell 代码但不包括库分析信息【英文标题】:Profiling Haskell code but excluding library profiling information 【发布时间】:2014-09-20 10:53:11 【问题描述】:

众所周知,在分析 Haskell 应用程序时,所有依赖项都已安装了分析信息。这很好,但是在 .cabal 文件中包含 -auto-all 的 Haskell 包会出现问题。这意味着我将始终看到他们的分析信息,即使这与我无关。

请允许我举一个有问题的例子。我正在构建一个小游戏引擎,在我的游戏循环加载纹理之前我做了很多工作,比如JuicyPixels。这不是分析有趣的代码 - 我对分析游戏循环本身感兴趣。然而,因为JuicyPixels 使用-auto-all 构建了自己,似乎没有办法从分析中排除这些信息。结果,我最终得到了数百个纯粹是噪音的分析行。

是否可以删除所有JuicyPixels 调试信息(或任何库,在一般情况下)?

【问题讨论】:

我会修补 JuicyPixels 并向维护者投诉。在cabal文件中无条件启用-auto-all是不负责任的做法。 来自 JuicyPixels 的阴谋集团文件:Ghc-options: -O3 -WallGhc-prof-options: -rtsopts -Wall -prof -auto-all @RomanCheplyaka - 是的,确实有这种感觉。我是否应该开始一个更公开的对话,“图书馆的ghc-prof-options 被认为是有害的”? :) @ocharles 是的,那很好。我想很多人都没有意识到这个问题。请务必提及,不需要的成本中心不仅会污染配置文件,还会因运行时成本不为零而扭曲它们。 @ocharles 我的评论是对 Roman 的“部分”回答。 【参考方案1】:

cmets 认为这是 JuicyPixels 的 cabal 文件的问题(如果此问题在其他库中继续发生,那么这也是他们的错)。我开始讨论 Haskell 咖啡馆 (http://haskell.1045720.n5.nabble.com/ghc-prof-options-and-libraries-on-Hackage-td5756706.html),并将尝试跟进。

【讨论】:

以上是关于分析 Haskell 代码但不包括库分析信息的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Haskell 要求所有库都启用分析功能以进行分析?

分析使用 Haskell 中的解析器组合库编写的解析器

你如何在 Haskell 中安装分析库?

在 Ubuntu 14.04.5 中使用 cabal 时,如何在 Haskell 中安装分析库?

如何从 Kubernetes 中运行的 Haskell 服务收集分析信息?

Haskell 分析