Java的日期与时间

作者:Jakob Jenkov

三、Java中计算运行时间

在Java中使用System.currentTimeMillis()来记录程序运行时间非常简单。只要在操作前后各记录一次时间,计算差值即可:

long startTime = System.currentTimeMillis();
callOperationToTime();
long endTime   = System.currentTimeMillis();
long totalTime = endTime - startTime;

最终得到的totalTime,即为callOperationToTime()的运行时间。

重复这个操作
因为System.currentTimeMillis()不能返回精确时间,因为将某个操作执行多次并取平均值,是一个不错的思路。也许10次,100次,1000次,甚至更多次的测试,可以把误差磨平。另一个原因是,重复一个操作,可以让Java虚拟机加载类时包含这个代码,JIT编译它,也许还会进行优化。

编写一个Timer类
由于上述代码较为繁琐,我将其封装在一个Timer类中。如下:
(原作者写的类其实也很烦,稍微改了改,需要原代码可上原网站此章节查看)

public class Timer {
  private long startTime = 0;

  public void Timer(){
    startTime = System.currentTimeMillis();
  }

  public long getTotalTime() {
    long endTime = System.currentTimeMillis(); 
    return startTime - endTime;
  }
}

使用方式如下:

Timer timer = new Timer();
callOperationToTime();
long totalTime = timer.getTotalTime();