gpt4 book ai didi

java - .toNanos() 方法无法正常工作

转载 作者:行者123 更新时间:2023-11-29 09:26:31 25 4
gpt4 key购买 nike

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

我试图阅读以下类(class),但无法找出我做错了什么:导入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));

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

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

最佳答案

我赞同@Pshemo 关于Instant.now() 的评论。

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

This will query the system UTC clock to obtain the current instant.

链接指向的位置:

This may use System.currentTimeMillis(), or a higher resolution clock if one is available.

所以它的精度可能比毫秒高,也可能不高。在您的情况下,“可能没有”似乎适用。

关于java - .toNanos() 方法无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58267508/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com