如何分析SBT中任务所花费的时间

时间:2015-09-15 14:07:18

标签: scala sbt

我想知道为什么有时我的构建速度要慢得多。

所以我决定测量长时间运行的时间。

运行纯Scala代码时,很容易这样做:

def myMethod() = {
   val initTime = System.currentTimeMillis
   ...
   val elapsedTime = System.currentTimeMillis-initTime
}

但对于packageBincompile这样的任务,其源代码我无法更改,我不知道如何衡量它,因为我无法控制何时运行someTask.value。< / p>

任何提示?

相关问题:

2 个答案:

答案 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)

https://raw.githubusercontent.com/jrudolph/sbt-optimizer/master/docs/example-line.png

  

每个输出行对应一个已执行的任务。

     
      
  • 第一次是此任务运行的总时间。
  •   
  • 以绿色显示的第二个时间是实际执行时间。
  •   
  • 以红色显示的第三次是任务想要运行但等待全局常春藤锁定的时间。
  •   
  • 以青色显示的最后一次是任务被阻止等待Ivy下载的时间。
  •