14

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

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

我正在使用 Scala 2.9.2 和 SBT 0.11.2

4

1 回答 1

20

您可以尝试以下 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")

于 2012-10-17T12:20:41.067 回答