【发布时间】:2015-06-03 06:31:16
【问题描述】:
我正在尝试使用 nanoTime 计算 java 中经过的时间。但每次它给我不同的结果。为什么总是不一致?
示例代码:
long startTime=System.nanoTime();
String.valueOf(number).length();
long endTime = System.nanoTime();
System.out.println(endTime-startTime);
【问题讨论】:
-
为什么需要保持一致?
-
好吧,因为 CPU 负载和 状态 并不总是相同的(每次都不同)。正如@Gosu 建议的那样,这不是进行适当的微基准测试的正确方法
-
这样的代码永远无法给出一致的时间;正如@defectus 所说,您必须问自己为什么需要保持一致。这看起来像一个 XY 问题,那么你想要实现什么?
-
为了保持一致性,使用毫秒而不是纳秒来计算经过的时间。