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();