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

时间:2013-09-17 19:15:55

标签: java time

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

例如:

algo() {
  long time_1 = time_X
  .
  .
  .
  long time_2 = time_Y

  difference = time_2 - time_1;
}

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

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

4 个答案:

答案 0 :(得分:9)

毫秒,请使用:System.currentTimeMillis()代替:

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

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

答案 1 :(得分:1)

简单。

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

非常适用于评估函数所用的时间。此外,如果您想在几秒钟内获得时间,请将差异除以1000.

答案 2 :(得分:0)

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

答案 3 :(得分:0)

System.nanoTime()System.currentTimeMillis()更准确。

当我需要时,这就是我用于计算时间的东西。

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

优势

  • 以纳秒为单位的时间
  • 相当精确到毫秒

缺点

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