0
我试图用Java 8的LocalTime和Instant实现一个计数器,两者都正常工作,但输出结果有点混乱!当我使用Instant时,我在同一个循环中获得较小的值?任何想法?在Java 8中实现计数器的最佳方式是什么?
// using Instant
Instant before=Instant.now();
// something time consuming
for(int i=1;i<100000000;i++);
Instant after=Instant.now();
Duration duration=Duration.between(before, after);
System.out.println(duration.toMillis());
// using LocalTime
LocalTime xBefore=LocalTime.now();
for(int i=1;i<100000000;i++);
LocalTime yAfter=LocalTime.now();
System.out.println(ChronoUnit.MILLIS.between(xBefore, yAfter));
谢谢你提到Holger! –
*经过时间*和现实世界(“挂钟”)时间之间存在显着差异,因为系统时钟可能受到NTP校正等影响。如果您想测量*经过时间*,请使用['System.nanoTime()'](https://docs.oracle.com/javase/8/docs/api/java/lang/System.html#nanoTime- - )并计算差异。但正常情况下,执行时间会随着JVM的优化器的工作而降低。您可以在链接的问答中阅读更多内容...... – Holger