【问题标题】:Speed up compilation in GHC加速 GHC 中的编译
【发布时间】:2013-03-17 18:40:26
【问题描述】:

除了-O0 之外,是否有其他选项可以加快编译时间?

如果不优化生成的程序也没关系。实际上,我只想经常快速地对大型 haskell 包进行类型检查。

标记-fno-code 极大地加快了编译速度,但由于该程序使用了TemplateHaskell,因此无法使用它。

【问题讨论】:

  • 如果在两次编译之间不改变很多模块,并且保留对象和接口文件,那么每个循环中需要重新编译的模块应该不会太多。这还不够好吗?
  • 乌尔克。在那种情况下,我不知道你怎么能加快速度。
  • 是TH生成耗时长,还是重新编译生成的代码?如果是前者,可以在开发的时候缓存生成的文件吗?
  • 由于 TH 在 GHCi 中运行,你可能会更幸运地从你的 TH 生成源代码,然后用 GHC 编译它。所以把你的 TH 分成两个阶段。本质上,使用 TH 作为编译器将 Haskell 翻译成 Haskell。

标签: haskell ghc compilation-time


【解决方案1】:

看起来像是hdevtools 的任务! Hdevtools 被用作同名 vim 插件的后端,它直接从编辑器提供快速的语法和类型检查。重新加载模块时,它与 ghci 一样快。我假设它可以从命令行使用。

另一种选择是保持 ghci 实例运行并使用它来检查您的模块。

【讨论】:

  • 谢谢,hdevtools 很棒!使用它而不是 ghci 更容易使用。不幸的是,hdevtools 不适用于 cabal 和 cabal-dev,但可以传递必要的 ghc 选项。
  • 是的。必须通过选项才能使其与 cabal-dev 一起使用有点烦人,但这似乎是此类工具的常见“功能”。
【解决方案2】:

我发现拆分大文件可以加快编译速度。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-03
    • 2013-05-24
    • 2019-03-25
    • 2012-09-28
    相关资源
    最近更新 更多