2

我在帖子中搜索了与System.nanoTime()方法调用处理时间相关的答案。

考虑以下代码

long lastTime = System.nanoTime();
long currentTime = System.nanoTime();
long deltaTime = currentTime - lastTime;

如果你运行它,currentTime - lastTime 将评估为“0”。发生这种情况的唯一方法是,如果计算机在纳秒的分辨率之外处理第二个方法调用(即调用花费的时间不到一纳秒)。从逻辑上讲,这是有道理的,因为计算机(平均而言)可以在一纳秒内执行多个进程。

这个对吗?如果不是,我的逻辑哪里错了?

4

2 回答 2

0

理论上它会打印出“0”。在某些情况下,如果您有很多其他任务正在执行,它可能会略有不同。

于 2013-05-23T00:49:35.103 回答
0

这在理论上是正确的,假设绝对没有其他进程在运行并且对 Java 方法的调用没有延迟。所以在一个真实的系统上这是不可能实现的,因为对 Java 方法的调用会引入很大的延迟。正如我在评论中所说,我可以在双核 Android 4.0.4 手机上实现大约 0.015 毫秒的差异。

于 2013-05-23T00:57:17.473 回答