为什么Macports的GHC包编译时间如此之长?

8

为什么呢?有引导过程和编译真正的编译器过程,但哪一部分消耗时间最多?


4
你知道你可以下载预先构建好的编译器和库来在OS X上使用吗?http://hackage.haskell.org/platform/mac.html - Tim Robinson
我了解在预构建版本和Macports之间存在互操作性问题。 - hampurter
好的,我从Macports没有需要任何Haskell相关的东西。平台安装程序和Cabal已经足够了。 - Tim Robinson
1
你没听说吗?现在计算机的速度已经非常快了,编译器的速度已经不再重要。 - Crashworks
1
@Tim Robinson:奇怪。对我来说,“Haskell平台”的系统不起作用。请参见https://dev59.com/zU7Sa4cB1Zd3GeqP5azU。 - yairchu
4个回答

9
从 Gentoo 的角度来看:
在 Gentoo 中,一切都是编译的。我们为 GHC 做的是,我们开发人员(包括像我这样的非官方开发人员)从旧版本编译出一个新版本的 GHC,创建一个二进制引导版本,然后将其打包,让用户使用该版本来编译新版本。
据我记忆,编译二进制文件可能需要两倍以上的时间(在我的笔记本电脑上使用二进制文件编译新版本大约需要 45 分钟)。有一些差异(文档是与二进制文件一起构建和分发的,而不是每个用户自己构建),但我没有看到任何可以解释如此长时间差异的原因。用于构建二进制文件和最终用户的实际 ebuild 可以在此处找到(启用 ghcbootstrap 标志表示它构建二进制文件,启用二进制标志表示用户安装和使用预构建的二进制文件而不是自己构建 GHC):http://code.haskell.org/gentoo/gentoo-haskell/dev-lang/ghc/ghc-6.12.3.ebuild 因此,如果 Macports 确实正在构建初始的引导二进制文件(特别是如果它是从最后一个仅包含 C 的版本开始引导到您实际想要安装的版本),那么我的猜测是初始引导过程需要这么长时间。

这是唯一一个至少试图回答问题的响应。 - David Rivers

5
构建GHC以花费很长时间而闻名。我听说过它从源代码构建需要超过8个小时的恐怖故事。据我所知,这主要是因为GHC的默认构建尝试进行大量的优化,以加快其自身运行时性能。即使使用部分预构建系统(这是我认为macports提供的),由于所有链接,这个过程仍然需要一段时间。
编辑:请参见以下链接

这是正确的回应:GHC编译时间比我知道的任何软件都要长。我在我的i3上已经构建了它超过8个小时。 - Mikhail

4

这可能需要一些时间。当我在我的iBook G4上编译它时,需要长达7个小时的时间。即使在内存充足、处理器速度快的MacBook Pro上,也需要2-3个小时。


2
一些构建过程需要相当长的时间,所需的时间取决于您的CPU速度以及可以用于构建的处理器时间。如果您担心它可能卡在某个点上,请使用-v标志运行install以获取与构建过程相关的更多描述性输出。因此,命令将类似于:
sudo port -v install [portfile]

1
除了项目的规模和复杂程度,还要考虑盒子使用的硬盘类型等因素。 - NotMe
没错 - 我说得很笼统,但是项目的规模、文件数量、使用的编译器/构建工具、依赖项数量、读写速度等都会影响所需时间的长短。 - nearlymonolith

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接