Java Date Timeチュートリアル-時間測定

3311 ワード

JavaではSystem.currentTimeMillis()で時間を測るのが一番便利です.いくつかの操作の前に時間を取得し、これらの操作の後に時間を測定し、時間差を算出します.次に例を示します.1 long startTime = System.currentTimeMillis(); 2 callOperationToTime(); 3 long endTime   = System.currentTimeMillis(); 4 long totalTime = endTime - startTime;
変数totalTimeは、callOperationToTime()メソッドを実行するのに必要なすべての時間を含むようになる.
繰り返し操作System.currentTimeMillis()は正確な時間を返さないため、測定操作を一度だけ実行するのは良いアイデアです.10回、100回、1000回、さらに多いかもしれません.これにより、ミリ秒ごとに変化するわけではない大きな粒度時間値による非正確な時間は安定化する.(原文:That way inaccuracy caused by large grained time values(values that does not change every millisecond)is leveled out.)測定操作を何度も繰り返し実行するもう一つの良い理由は、Java仮想マシンが測定操作コードのclassesをロードし、すぐにコンパイルすることができ、最適化できるかもしれないからです.(注:JVMJITは、バイトコードでよく使われるセグメントをマシンコードにコンパイルし、パフォーマンスを向上させます.JITについて良い記事があります.アドレスはこちらです)
Timerクラス
前述の計算方法はかなり煩雑で退屈であり、Timerクラスにカプセル化することができます.以下は大まかな例です.01 public class Timer { 02 03    private long startTime = 0 ; 04    private long endTime   = 0 ; 05 06    public void start(){ 07      this .startTime = System.currentTimeMillis(); 08    } 09 10    public void end() { 11      this .endTime   = System.currentTimeMillis();  12    } 13 14    public long getStartTime() { 15      return this .startTime; 16    } 17 18    public long getEndTime() { 19      return this .endTime; 20    } 21 22    public long getTotalTime() { 23      return this .endTime - this .startTime; 24    } 25 } Timerクラスの使用方法の例を次に示します.1 Timer timer = new Timer(); 2 timer.start(); 3 callOperationToTime(); 4 timer.end(); 5 long totalTime = timer.getTotalTime();