処理時間を計測してコンソールに出力するサンプルです。
import java.text.*;
import java.util.*;
public class DateTimeSample4 {
public static void main(String[] args) {
// 開始時刻を取得
Date start = new Date();
// 何か処理
String str = "";
for (int i = 0; i < 30000; i++) {
str += "" + i;
}
// 終了時刻を取得
Date end = new Date();
// 開始時刻と終了時刻の差分を取得
long time = end.getTime() - start.getTime();
// 処理時間を表示
System.out.println("処理時間 " + time / 1000d + "秒");
// 開始時刻を取得
start = new Date();
// 何か処理
StringBuffer sb = new StringBuffer();
for (int i = 0; i < 30000; i++) {
sb.append("" + i);
}
// 終了時刻を取得
end = new Date();
// 開始時刻と終了時刻の差分を取得
time = end.getTime() - start.getTime();
// 処理時間を表示
System.out.println("処理時間 " + time / 1000d + "秒");
}
}
処理結果
処理時間 4.515秒
処理時間 0.011秒
解説
Javaで処理時間を計測するには、以下のように開始時刻と終了時刻を「new Date()」で取得します。
// 開始時刻を取得
Date start = new Date();
// 計測対象の処理
// 終了時刻を取得
Date end = new Date();
処理時間は「処理時間 = 終了時刻 - 開始時刻」で計算できるので、以下のようにすると処理時間を求めることができます。
// 開始時刻と終了時刻の差分を取得
long time = end.getTime() - start.getTime();
ここで求めた処理時間は1ミリ秒単位(1000分の1秒)なので、秒単位で表示するために以下のような計算を挟んで処理時間を出力しています。1000で1秒だと覚えておけば、わざわざ計算して秒単位で表示する必要もありませんが。
// 処理時間を表示
System.out.println("処理時間 " + time / 1000d + "秒");
ちなみに、今回計測したのは 0 ~ 29999の数値を文字列として結合する処理です。最初の処理は何の工夫もなく String のままどんどんたしていって4.5秒近く時間がかかっています。2番目の処理は、StringBufferクラスを使って結合しています、こちらは0.1秒もかかっていません。
Javaでは、長い文字列を String クラスそのままで何度も結合して作るのはタブーとされています。今回の処理も、たった3万回のループに4.5秒もかかっていますが、StringBufferを使った場合は 11ミリ秒で処理が完了しています。
最終更新:2013年11月24日 09:57