计算 2 个语句之间的执行时间差



正在运行的程序中计算两个步骤之间的时间(可能是最短单位)的方法是什么?

例如:

algo() {
  long time_1 = time_X
  .
  .
  .
  long time_2 = time_Y
  difference = time_2 - time_1;
}

我一直在使用new GregorianCalendar().getTimeInMillis()进行计算.但我得到的区别是0.

有什么方法可以知道任何算法中某些步骤之间的差异吗?在这里,我想知道算法的第一步和最后一步之间的区别。就在算法将最终返回之前。

对于毫秒,请改用: System.currentTimeMillis()

long time_1 = System.currentTimeMillis();
.
.
.
 long time_2 = System.currentTimeMillis();

并减去。对于纳秒级精度,请使用 nanoTimenanoTime与内部计时器以外的任何系统时钟无关,因此对于 100 ns,它可以从 120 到 220,从 100020 到 100120,等等。

很简单。

long time_1 = System.currentTimeMillis();
...
long time_2 = System.currentTimeMillis();
difference = time_1 - time_2;
System.out.println( difference + "milliseconds" );

对于评估函数所花费的时间非常有用。 此外,如果您想以秒为单位获得时间,请将差除以 1000。

您可能需要检查 Guava 的秒表是否可以使用第三方库。它可以以不同的粒度测量时间,并有助于以易于消化的格式显示结果。

System.nanoTime() 比 System.currentTimeMillis() 更精确。

这就是我在需要时用于计算时间的方法。

请随时查看官方 Java API 文档以了解详细信息。总结一下:

优点

  • 时间(纳秒)
  • 相当精确到毫秒

缺点

  • 在单个 JVM 运行时中具有真正的意义(不要比较两个不同 JRE 之间的 nanoTimes 或同一 JRE 的两个单独调用)

最新更新