为什么?有一个引导过程和编译真正的编译器过程,但是哪个部分消耗的时间最多?
4 回答
从 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 版本并引导到您实际想要的版本的方式),那么初始引导过程需要很长时间安装)。
建造 GHC 因需要永远而臭名昭著。我听说过关于从源代码构建花费超过 8 小时的恐怖故事。据我了解,这主要是因为 GHC 的默认构建尝试进行大量优化以加快其自身的运行时性能。即使使用部分预构建的系统(我相信 macports 提供的系统),由于所有链接,此过程仍然可能需要一段时间。
编辑:请参阅以下 http://hackage.haskell.org/trac/ghc/wiki/Building/Using#HowtomakeGHCbuildquickly
可能需要一段时间。以前在 iBook G4 上编译时,耗时长达 7 小时。即使在具有大量 RAM 和快速处理器的 MacBook Pro 上,也可能需要 2-3 个小时。
一些构建过程需要相当长的时间,而时间量很大程度上取决于 CPU 的速度以及可以用于构建的处理器时间。
如果您担心它可能会在某个时刻挂起,install
请使用该-v
标志运行以获得与构建过程相关的更多描述性输出。因此,该命令将类似于:
sudo port -v install [portfile]