我试着"简介"通过仅打印系统时间的方法是一种昂贵的方法。我写了一个小方法,打印相对于开始时间的当前时间(以秒为单位)。 :
object Bechmark extends App {
var starttime = 0L
def printTime(): Unit = {
if (starttime == 0L) {
starttime = System.currentTimeMillis()
}
println((System.currentTimeMillis() - starttime) / 1000.0)
}
printTime()
Thread.sleep(100)
printTime()
}
因此我希望第一次调用printTime
打印接近0的内容。但是我得到的输出是
0.117
0.221
我不明白为什么第一次通话已经给了我~120毫秒?为了我的目的,正确的实施是什么?
答案 0 :(得分:0)
正如其他人所说,您的应用程序的运行时间并不一定代表实际的世界时间。有几个因素会影响它:JVM的预热时间,JVM垃圾收集,JVM的稳定状态以进行精确测量,OS进程调度和重排。 对于与Scala相关的目的,我建议ScalaMeter 这使您可以调整所有上述变量并非常准确地测量时间。