我想知道为什么有时我的构建速度要慢得多。
所以我决定测量长时间运行的时间。
运行纯Scala代码时,很容易这样做:
def myMethod() = {
val initTime = System.currentTimeMillis
...
val elapsedTime = System.currentTimeMillis-initTime
}
但对于packageBin
或compile
这样的任务,其源代码我无法更改,我不知道如何衡量它,因为我无法控制何时运行someTask.value
。< / p>
任何提示?
相关问题:
答案 0 :(得分:17)
在启动sbt时将-Dsbt.task.timings=true
添加到您的JAVA_OPTS
答案 1 :(得分:9)
要获得更完整的分析,您还可以使用jrudolph/sbt-optimizer/
sbt-optimizer
是一个实验性插件,它连接到sbt的任务执行引擎,并在运行任务树后提供图形ASCII报告将插件添加到
project/plugins.sbt
:
addSbtPlugin("net.virtual-void" % "sbt-optimizer" % "0.1.2")
并在项目中启用它:
enablePlugins(net.virtualvoid.optimizer.SbtOptimizerPlugin)
每个输出行对应一个已执行的任务。
- 第一次是此任务运行的总时间。
- 以绿色显示的第二个时间是实际执行时间。
- 以红色显示的第三次是任务想要运行但等待全局常春藤锁定的时间。
- 以青色显示的最后一次是任务被阻止等待Ivy下载的时间。