小编Evg*_*eni的帖子

如何比较两个纳米时间值?[javadoc混淆]

我已经阅读了javadoc,System.nanoTime()一切看起来都很清楚.直到我到达最后一段:

比较两个nanoTime值

long t0 = System.nanoTime();

...

long t1 = System.nanoTime();

一个应该使用t1 - t0 <0,而不是t1 <t0,因为数字溢出的可能性.

有两件事我不清楚:

  1. 为什么要检查t1 < t0是否t1被带走t0?我的理解是纳米时间总是在增加.所以,我宁愿检查一下t1 > t0.
  2. 让我们假设这是一个错字,他们意味着正确的检查t1 - t0 > 0.我仍然不明白为什么这是正确的检查方式而不是t1 > t0.他们提到数字溢出,我不太明白他们的意思.关于数值溢出,这里提到的是:

因数值溢出连续调用跨越大于约292年(2 ^ 63纳秒)将无法正确计算经过的时间有较大的差异.

好吧,因为纳米时间存储为长值,它最终会在292年内溢出.接下来会发生什么?它是从头开始,即最低负值-2 ^ 63?或者它是否会停止测量并返回(2 ^ 63 - 1)?

java comparison time integer-overflow

19
推荐指数
3
解决办法
1068
查看次数

标签 统计

comparison ×1

integer-overflow ×1

java ×1

time ×1