2012年7月12日木曜日

Javaで計算時間を測る

計算時間を測るために、開始時と終了時の時間を取得して表示する

long start = System.currentTimeMilis();

  {処理}

long end = System.currentTimeMillis();
System.out.println("Calculation Time: " + (end-start)/1000. + " sec");

これは実時間を計測している。
つまり、どのくらいCPUを使ったかとかではなく、現実にかかった時間。
途中で何かのトラブルでCPUをフルに使えなかった場合なんかは、その分時間がかかる。

上の例では単純に計算にかかった時間を表示している。
夜中にバックグラウンドで計算させておいて、朝にいつ計算が終わったのかを知りたいときなんかもある。
そんなときには Date クラスを使う。
Date クラスは非推奨のメソッドがいくつかあるけど、今回の目的にはこれで十分だし、便利。

さっきと同じように、最初と最後に処理をして、計算の開始時刻と終了時刻を timestamp.txt に書き込む。

Date start = new Date();

  {処理}

Date end = new Date();
try{
  BufferedWriter bw = new BufferedWriter(new FileWriter("timestamp.txt"));
  bw.write("start: " + start);
  bw.newLine();
  bw.write("end: " + end);
  bw.flush();
  bw.close();
}
catch(IOException ioe){
  ioe.printStackTrace();
}

としておくと、timestamp.txt に開始時刻と終了時刻が
曜日 月 DD HH:MM:SS タイムゾーン YYYY
のフォーマットで書き込まれる。
タイムゾーンは、例えば、中央ヨーロッパの夏時間なら CEST と書き込まれる。




0 件のコメント:

コメントを投稿