nanoTime()计时器的分辨率

时间:2013-05-23 00:44:36

标签: complexity-theory time-complexity nanotime

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

请考虑以下代码

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

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

这是正确的吗?如果没有,我的逻辑在哪里错了?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

相关问题