我正在调用方法之前和方法返回之后立即读取系统时间并获取时间差,这将给出执行方法所花费的时间。
代码片段
long start = System.currentTimeMillis ();
method ();
long end = System.currentTimeMillis ();
System.out.println ("Time taken for execution is " + (end - start));
奇怪的是输出是0
..这怎么可能..?
最佳答案
很可能它比相当粗粒度的系统时钟花费的时间更短。 (例如,您可能会发现 System.currentTimeMillis()
仅每 10 或 15 毫秒更改一次。)
System.currentTimeMillis
适用于找出当前时间,但它不够精细,无法测量较短的持续时间。相反,您应该使用 System.nanoTime()
它使用高分辨率计时器。 nanoTime()
不适合查找当前时间 - 但它专为测量持续时间而设计。
将其视为挂钟和秒表之间的区别。
关于java - 执行 java 方法所花费的时间为零?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8547002/