执行java方法所花费的时间是零?

时间:2011-12-17 18:35:27

标签: java methods time

我正在调用方法之前读取系统时间,并在方法返回后立即读取时间差,这将给出执行方法所花费的时间。

代码段

long start = System.currentTimeMillis ();
method ();
long end = System.currentTimeMillis ();

System.out.println ("Time taken for execution is " + (end - start));

奇怪的是输出是0 ..这怎么可能..?

3 个答案:

答案 0 :(得分:9)

它可能比相当粗粒度的系统时钟花费更短的时间。 (例如,您可能会发现System.currentTimeMillis()每10或15毫秒只会更改一次。)

System.currentTimeMillis有助于找出当前时间,但对于测量短时间而言,它并不够精细。相反,您应该使用使用高分辨率计时器的System.nanoTime()nanoTime() 适合查找当前时间 - 但它专为测量持续时间而设计。

将它视为挂钟和秒表之间的区别。

答案 1 :(得分:5)

使用nanoTime()

答案 2 :(得分:1)

因为它花了不到1毫秒?

如果你想获得一个更有意义的指标,我建议你在一个循环中调用你的方法1000000次,计时,再除以1000000。

当然,即便如此,这可能也不具代表性;对缓存的影响会有所不同等。