java - system.nanoTime()运行速度太慢
问题描述:
我在我的应用程序中使用system.nanoTime,并计算相对于启动时间的时间。
我的应用程序运行得非常好,直到我将它复制到新计算机上,并且纳米时间给了我更慢的值。java - 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);
编辑:我使用的纳米,因为我需要处理甚至TS在纳米时间内发生,并将其接收到的纳米时间打印到日志中
答
这就像Java API文档所说的关于System.nanoTime()
:
此方法只能用于测量已用时间,而不是与系统或挂钟时间的任何其他概念相关的 。返回的值 表示自一些固定但任意的起点 时间(可能在未来,因此值可能为负)后的纳秒。该方法的所有调用在 Java虚拟机的实例中都使用相同的 源;其他虚拟机实例可能会使用不同的来源。
此方法提供纳秒的精度,但不一定 纳秒级分辨率(即频率变化值) - 没有 担保除了分辨率至少不如 说的currentTimeMillis()的制作。
它不提供与时间戳(currentTimeMillis)的任何耦合,并且不提供固定分辨率。
在你的情况看来,Java现在有一个比以前更高的分辨率定时器,因此不需要使用系统时间。
你是什么意思“给我慢的值”。方法执行是否需要更多时间,或者您获得了您不期望的值?也许这可以帮助你http://stackoverflow.com/questions/351565/system-currenttimemillis-vs-system-nanotime – SWoeste 2012-04-05 10:28:24