scala中简单时间测量的问题

时间:2016-07-27 14:22:11

标签: scala

我试着"简介"通过仅打印系统时间的方法是一种昂贵的方法。我写了一个小方法,打印相对于开始时间的当前时间(以秒为单位)。 :

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毫秒?为了我的目的,正确的实施是什么?

1 个答案:

答案 0 :(得分:0)

正如其他人所说,您的应用程序的运行时间并不一定代表实际的世界时间。有几个因素会影响它:JVM的预热时间,JVM垃圾收集,JVM的稳定状态以进行精确测量,OS进程调度和重排。 对于与Scala相关的目的,我建议ScalaMeter 这使您可以调整所有上述变量并非常准确地测量时间。