如何测量scala程序的运行时间?

如何测量scala程序的运行时间?,scala,hadoop,scalding,Scala,Hadoop,Scalding,我有一个简单的滚烫程序来转换我在本地模式下使用com.twitter.sporthing.Tool执行的一些数据 val start = System.nanoTime val inputPaths = args("input").split(",").toList val pipe = Tsv(inputPaths(0)) // standard pipe operations on my data like .filter( 'myField ), etc. .write(Tsv(

我有一个简单的滚烫程序来转换我在本地模式下使用com.twitter.sporthing.Tool执行的一些数据

val start = System.nanoTime    

val inputPaths = args("input").split(",").toList
val pipe = Tsv(inputPaths(0))
// standard pipe operations on my data like .filter( 'myField ), etc.
.write(Tsv(args("output")))

println("running time: " + (System.nanoTime - start) / 1e6 + "ms")

我想测量程序的运行时间。我在代码的开头和结尾编写了测量时间的标准技巧,但是,结果是~100毫秒,而实际时间接近60秒。最好的方法是什么?谢谢

一种对我有效的方法是使用微基准测试

目前,对于Scala程序,您可以使用


它考虑了GC以及预热JVM。我认为应该在单个JVM上以本地模式工作

我找到了一个简单的答案。运行作业时,在hadoop命令之前添加time关键字

time hadoop jar myjob.jar ...

谢谢你的回答!我想知道是否有更简单的东西不用另一个包?为什么我的原始解决方案不起作用?您的解决方案应该起作用,并让您对性能有一个很好的了解。如果您使用sbt作为构建工具,那么使用Scalameter非常容易。即使是刻度计也不完美。我认为这样更好,因为他们考虑了GC和JVM变暖。此外,您可以执行其中的多个,以获得执行时间的良好度量。