在我的Scala / SBT项目中,我有一个文件,最多需要5(!)分钟才能编译。所有其他的都可以在几秒钟内编译。这使得开发非常痛苦。
我确定我在滥用一些Scala结构,但我不知道如何调试它。如何在Scala中调试长编译时间?
我正在使用Scala 2.9.2和SBT 0.11.2
在我的Scala / SBT项目中,我有一个文件,最多需要5(!)分钟才能编译。所有其他的都可以在几秒钟内编译。这使得开发非常痛苦。
我确定我在滥用一些Scala结构,但我不知道如何调试它。如何在Scala中调试长编译时间?
我正在使用Scala 2.9.2和SBT 0.11.2
您可以尝试以下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)