Java时间测量

时间:2020-01-09 10:35:57  来源:igfitidea点击:

使用Java来测量时间最容易通过System.currentTimeMillis()方法完成。

我们要做的是获取要测量的操作前后的时间,然后计算时间差。这是一个例子:

long startTime = System.currentTimeMillis();

callOperationToTime();

long endTime   = System.currentTimeMillis();

long totalTime = endTime - startTime;

变量" totalTime"现在将包含执行" callOperationToTime()"方法所花费的总时间。

重复操作

由于System.currentTimeMillis()不能准确返回时间,因此最好执行多次测量操作。可能是10、100或者1.000次。也许更多。这样,可以消除大粒度时间值(每毫秒不变的值)引起的不准确性。

重复进行多次测量的另一个很好的理由是,允许Java虚拟机加载包含代码的类,进行JIT编译,甚至优化。

计时器类

本文前面列出的计算相当琐碎但繁琐,可以封装在" Timer"类中。这是一个草图:

public class Timer {

  private long startTime = 0;
  private long endTime   = 0;

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

  public void end() {
    this.endTime   = System.currentTimeMillis();  
  }

  public long getStartTime() {
    return this.startTime;
  }

  public long getEndTime() {
    return this.endTime;
  }

  public long getTotalTime() {
    return this.endTime - this.startTime;
  }
}

这是一个如何使用它的示例:

Timer timer = new Timer();

timer.start();

callOperationToTime();

timer.end();

long totalTime = timer.getTotalTime();