java中的计时器精度

7 java timer

我正在计算一些东西,我不能把它放在一个很长的循环中.我需要给他们时间看他们需要多长时间才能完成,但似乎计时器在java中的准确度为15-16毫秒?我怎么能绕过这个?

Joh*_*her 9

你尝试过使用System.nanoTime()吗?

来自Javadoc:

返回最精确的可用系统计时器的当前值,以纳秒为单位.

此方法只能用于测量经过的时间,与系统或挂钟时间的任何其他概念无关.返回的值表示纳秒,因为某些固定但是任意时间(可能在将来,因此值可能为负).该方法提供纳秒精度,但不一定是纳秒精度.不保证值的变化频率.由于数值溢出,跨越大于约292年(2 63纳秒)的连续调用的差异将无法准确计算经过的时间.

例如,要测量某些代码执行所需的时间:

long startTime = System.nanoTime(); // ...正在测量的代码... long estimatedTime = System.nanoTime() - startTime;

  • 嘿,我喜欢这句话:"连续调用的差异超过大约292年(263纳秒)将无法准确计算由于数值溢出而导致的经过时间." 对于运行时间最长的软件程序应该没有中断/故障的竞赛. (6认同)