【问题标题】:Debug long compile times in Scala and SBT在 Scala 和 SBT 中调试较长的编译时间
【发布时间】:2012-10-06 21:42:59
【问题描述】:

在我的 Scala/SBT 项目中,我有一个文件最多需要 5(!)分钟来编译。所有其他的可以在几秒钟内编译。这使得开发非常痛苦。

我确定我在滥用一些 Scala 结构,但我不知道如何调试它。如何在 Scala 中调试较长的编译时间?

我正在使用 Scala 2.9.2 和 SBT 0.11.2

【问题讨论】:

  • 编译时间长有很多原因。如果不发布代码,我怀疑你会得到很多帮助。第一步可能是将文件拆分为几个文件,然后查看哪些部分编译时间最长。这也有助于 _re_compilation 时间。
  • 我无法在不重构大量代码的情况下分解文件,因为它只包含一个类。我更感兴趣的是看看是否有一些我可以在编译器中打开的标志,它可以给我更多关于问题所在的提示。
  • 很公平,但是您可以将类拆分为特征,而无需触及其余代码。

标签: scala sbt


【解决方案1】:

您可以尝试以下 Scala 编译器选项:

  • -Ystatistics打印编译器统计信息

找到一个花费最多时间的阶段。然后,试试这些:

  • -Xprint:<phase>打印出程序后或“全部”
  • -Yshow-trees 与 -print:phase 结合使用时显示详细的树
  • -Ydebug输出调试信息
  • -Ypmat-debug 跟踪所有模式匹配器活动。

要直接从 sbt 控制台启用这些设置,您可以使用set scalacOptions in ThisBuild += "-Ystatistics",或多个set scalacOptions in ThisBuild ++= Seq("-Yshow-trees", "-Ydebug")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多