在正在运行的程序中,在两个步骤之间计算时间(可以是最短单位)的方法是什么?
例如:
algo() {
long time_1 = time_X
.
.
.
long time_2 = time_Y
difference = time_2 - time_1;
}
我一直在使用new GregorianCalendar().getTimeInMillis()
进行计算。但我得到的差异是0
。
有什么方法可以让我知道任何算法中某些步骤之间的区别?在这里,我想知道算法的第一步和最后一步之间的区别。就在算法最终返回之前。
答案 0 :(得分:9)
毫秒,请使用:System.currentTimeMillis()
代替:
long time_1 = System.currentTimeMillis();
.
.
.
long time_2 = System.currentTimeMillis();
并减去。对于纳秒精度,请使用nanoTime
。 nanoTime
与内部定时器以外的任何系统时钟无关,因此对于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文档以获取详细信息。总结一下:
优势:
缺点: