Haskell profiling -prof

时间:2014-07-22 20:12:33

标签: haskell

...再次

在最近开始学习Haskell之后,我正忙着在GHC中进行分析。我正在尝试使用性能分析来查看函数的不同实现如何在性能上有所不同,例如使用列表理解而不是map。我正在尝试使用-prof标志进行编译,但我得到以下输出:

david@david-LinuxMint ~/Desktop/Sandbox/Haskell/a $ ghc --make Filt -prof

Filt.hs:1:1:
    Could not find module `Prelude'
    Perhaps you haven't installed the profiling libraries for package `base'?
    Use -v to see a list of the files searched for

程序编译好了,省略了-prof标志。任何人有任何想法,我出错了?我试图在SO /互联网上找到一些东西,但是我的Google-Fu让我失望了?欢呼声。

1 个答案:

答案 0 :(得分:2)

这适用于Linux,尤其是Debian,但我相信OP正在使用Mint,我认为它可能是Debian的变体。

您可能已经从操作系统打包系统(Debian:APT)获得了基础,因此您也希望从同一系统获得基本的分析版本。在Debian上的hackage包" foo"在Debian软件包中,#lib; libghc-foo-dev" [1]。 " libghc-blah-dev"的分析版本在Debian软件包" libghc-blah-prof"。

现在,基地有点特别。这些包存在,但是"虚拟&#34 ;;它们列在关系中,但实际上是由(一个或多个)其他真实包安装的。在Debian中,虚拟libghc-base-dev由真实包ghc提供,而虚拟libghc-base-dev由真实包ghc-prof提供。

所以,安装ghc-prof(或Mint等价物),你就会好,或者至少继续下一个错误。

最终,您最终会直接从hackage下载和构建软件包。您必须更改您的cabal设置以构建这些库的分析版本。

[1]如果另一个Haskell编译器(返回)进入Debian,那么" ghc"在" libghc"将更改为适合该编译器的字符串。