.toNanos() 方法不能正常工作



我试图制作一种方法,让我了解我的程序运行需要多少时间,但由于未知原因,我无法获得纳秒。

我试图阅读以下课程,但无法找出我做错了什么: 导入java.time.Duration; 导入java.time.Instant;

方法:

public static String calcExecutionTime(Instant startTime, Instant endTime) {
if ((Duration.between(startTime, endTime).toNanos()) < 1000000) {
return Duration.between(startTime, endTime).toNanos() + " nanoseconds.";
} else if ((Duration.between(startTime, endTime).toMillis()) < 1000) {
return Duration.between(startTime, endTime).toMillis() + " milliseconds.";
} else if ((Duration.between(startTime, endTime).toSeconds()) < 100) {
return Duration.between(startTime, endTime).toSeconds() + " seconds.";
} else if ((Duration.between(startTime, endTime).toMinutes()) < 60) {
return Duration.between(startTime, endTime).toMinutes() + " minutes.";
} else {
return Duration.between(startTime, endTime).toHours() + " hoursm.";
}
}

主要在这里:

Instant instantStart = Instant.now();
Instant instantEnd = Instant.now();
System.out.print("Execution time for this program: " + calcExecutionTime(instantStart, instantEnd));

如果我使用旧的系统.nanoTime((;我得到 300-400 纳秒的结果,但使用 toNanos(( 在同样的情况下我得到 0。

编辑: 我不使用 getNano(( 我使用 toNanos((

我会同意@Pshemo对Instant.now()的评论。

https://docs.oracle.com/javase/8/docs/api/java/time/Instant.html#now-- :

这将查询系统 UTC 时钟以获取当前时刻。

链接指向:

这可能使用 System.currentTimeMillis(( 或更高分辨率的时钟(如果有(。

因此,它的精度可能高于毫秒,也可能不高于毫秒。在您的情况下,"可能没有"似乎适用。

相关内容

  • 没有找到相关文章

最新更新