系统计时的最佳度量单位是什么



我想计算一个程序需要多长时间才能完整地执行。可以用System.nanoTime();来计时,但是分析程序的最佳度量单位是什么?

这完全取决于程序的性质,以及日志记录中需要的分辨率。作为一般规则,我认为毫秒就足够了。

有什么问题:

long t1 = System.nanoTime();
// do something
long t2 = System.nanoTime();
System.out.println(t2 - t1); 

您也可以使用System.currentTimeMillis()(这可能更合适),这实际上取决于您尝试测量的过程。

毫秒

比纳秒更常见,因为并非每个系统都具有这种保真度。

long t0 = System.currentTimeMillis();
// Time passes...
long t1 = System.currentTimeMillis();
long elapsedMillis = t1 - t0;
System.nanoTime()

旧版本的 JVM 上不受支持。这些精度可能也取决于操作系统。这篇文章非常有趣,并解释了更多关于这类事情的信息

我个人会使用 System.currentTimeMillis(),因为它仍然非常准确并且受到旧 VM 的支持。如果你想要更高的精度,那么我认为System.nanoTime()是你能得到的最好的。

这篇SO帖子也可能对你感兴趣

最新更新