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

Posted

技术标签:

【中文标题】为啥 Haskell 要求所有库都启用分析功能以进行分析?【英文标题】:Why does Haskell require all libraries to be profiling-enabled for profiling?为什么 Haskell 要求所有库都启用分析功能以进行分析? 【发布时间】:2014-11-30 04:02:47 【问题描述】:

Q:Profile Haskell without installing installing profiling libraries for all dependenciesA:你不能。安装就行了,有什么问题?

为什么?

如果我只想分析我的代码,将库调用视为分析的无操作,为什么它不能允许部分分析?如果有很多已安装的依赖项,启用分析可能会很棘手。虽然不太准确,但应该更容易。

【问题讨论】:

我认为您的意思是询问 GHC,而不是 Haskell。您可能想要编辑您的标题(并添加 ghc 标签)。 这确实是一种痛苦,似乎已经存在多年但仍未修复 【参考方案1】:

我的理解是,当您要求 GHC 编译代码以进行分析时,代码的二进制接口会发生变化。 (而且它还链接到不同版本的 RTS。)由于同一程序中的所有代码必须具有相同的二进制接口......好吧,这就是原因。

为避免这种情况,GHC 必须要么支持在同一个程序中混合不同的二进制接口,要么找到一种方法来编译具有与非分析代码相同的接口的分析代码。我想这些事情都不是特别简单的事情。

我同意这非常烦人,虽然...

【讨论】:

以上是关于为啥 Haskell 要求所有库都启用分析功能以进行分析?的主要内容,如果未能解决你的问题,请参考以下文章

为啥所有异步图像加载(SDWebImage、AFNetworking)库都使用 UIImageView 而不是 UIImage?

为啥我的haskell程序这么慢? Haskell 编程,人生游戏

为啥 Haskell 中没有隐式并行性?

为啥我的 Haskell 代码与 Swift 和 C 相比如此缓慢 [重复]

常用的python库都有哪些

Haskell - 延迟评估是不是会导致此文件夹停止评估所有功能