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

sum*_*000 1 java methods time

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

代码段

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

System.out.println ("Time taken for execution is " + (end - start));
Run Code Online (Sandbox Code Playgroud)

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

Jon*_*eet 9

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

System.currentTimeMillis有助于找出当前时间,但它不足以测量短时间.相反,您应该使用System.nanoTime()哪个使用高分辨率计时器.nanoTime()适合用于查找当前时间-但它是专为测量持续时间.

可以把它想象成挂钟和秒表之间的区别.