gpt4 book ai didi

java - system.nanoTime() 运行太慢

转载 作者:行者123 更新时间:2023-12-01 16:35:06 29 4
gpt4 key购买 nike

我在我的应用程序中使用 system.nanoTime 并计算相对于开始时间的时间。
我的应用程序运行得很好,直到我将其复制到一台新计算机上,在它上纳米时间给了我较慢的值。

我编写了一个简单的应用程序只是为了确保。
纳秒时间与系统时间进行比较。
除了我的新计算机之外,它在其他计算机上显示相同的值。有什么建议么?

这是我的代码:首先我有

private long initNanoTime = System.nanoTime();
private long initTime = System.currentTimeMillis();

比我循环一个每秒运行的线程:

long timeUsingNanoTime = initTime + (System.nanoTime() - initNanoTime) / 1000000;
long timeUsingMilis = System.currentTimeMillis();
long nanotimeOffset = Math.abs(timeUsingNanoTime - timeUsingMilis);
if (nanotimeOffset < 100l) ? print("close") : print(far);

编辑:我使用nano是因为我需要处理在nano时间内发生的事件并将其收到的nano时间打印到日志

最佳答案

这就像 Java API 文档所说的 System.nanoTime() :

This method can only be used to measure elapsed time and is not related to any other notion of system or wall-clock time. The value returned represents nanoseconds since some fixed but arbitrary origin time (perhaps in the future, so values may be negative). The same origin is used by all invocations of this method in an instance of a Java virtual machine; other virtual machine instances are likely to use a different origin.

This method provides nanosecond precision, but not necessarily nanosecond resolution (that is, how frequently the value changes) - no guarantees are made except that the resolution is at least as good as that of currentTimeMillis().

它不提供与时间戳(currentTimeMillis)的任何耦合,也不提供固定的分辨率。

在您的情况下,Java 现在似乎拥有比以前更高分辨率的计时器,因此不需要使用系统时间。

关于java - system.nanoTime() 运行太慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10026812/

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