Java 什么';s是系统计时的最佳度量单位

Java 什么';s是系统计时的最佳度量单位,java,Java,我想计算一个程序整体执行所需的时间。可以使用System.nanoTime()对其计时但是什么是最好的度量单位最适合分析程序?有什么问题: long t1 = System.nanoTime(); // do something long t2 = System.nanoTime(); System.out.println(t2 - t1); 您也可以使用System.currentTimeMillis()(这可能更合适),它实际上取决于您试图测量的进程。毫秒比纳秒更常见,因为并非每个系统都

我想计算一个程序整体执行所需的时间。可以使用
System.nanoTime()对其计时但是什么是最好的度量单位最适合分析程序?

有什么问题:

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

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

毫秒比纳秒更常见,因为并非每个系统都有这样的逼真度

long t0=System.currentTimeMillis();
//时光流逝。。。
long t1=System.currentTimeMillis();
长elapsedMillis=t1-t0;

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

System.nanoTime()
在旧版本的JVM上不受支持。它们的精度可能也取决于操作系统。非常有趣,并解释了更多关于这类事情的信息

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


所以
你可能也对这篇文章感兴趣

pfff,我用的是yoctosecondsplese,我用的是Doc的DeLorean!如果你回到过去,结果将是负面的……我在发布此答案时假设OP不会进行任何类型的时间旅行。事实上,@user1329572的建议是不这样做的完全合理的理由。当然,如果您使用
System.currentTimeMillis()
,您确实可以在这里得到负面结果。