実行時間を計測したい
実行時間を計測したいんだけど〜。それ、クラスSystemのcurrentTimeMillisで、できるよ。
currentTimeMillis
public static long currentTimeMillis()
ミリ秒で表される現在の時間を返します。戻り値の時間単位はミリ秒ですが、値の粒度は基本となるオペレーティングシステムによって異なり、単位がより大きくなる場合があります。たとえば、多くのオペレーティングシステムでは、時間を 10 ミリ秒の単位で計測します。
「コンピュータ時間」と協定世界時 (UTC) との間に発生する微妙な相違については、Date クラスの説明を参照してください。
戻り値:
ミリ秒で測定した、現在時刻と協定世界時の UTC 1970 年 1 月 1 日午前 0 時との差
Oracle Technology Network for Java Developers | Oracle Technology Network | Oracle
例えば、StringBufferの速さを確かめたければ、以下のようにしてみる。
1 public class Main { 2 public static void main(String[] args) { 3 long start = System.currentTimeMillis(); 4 StringBuffer sb = new StringBuffer(); 5 for(int i=1;i<10000;i++){ 6 sb.append("Hello"); 7 } 8 long end = System.currentTimeMillis(); 9 System.out.println(msToSecs(end-start)); 10 } 11 public static String msToSecs(long t) { 12 return t/1000 +"." +t%1000; 13 } 14 }
$ java Main.java $ java Main 0.6
System.currentTimeMillis()が返すのはミリ秒単位なので、1000で割って、秒単位にする。
2008年12月23日追記
データ構造とかアルゴリズムとかよく分からなくても、実行時間を計測すれば『どっちが速いか』は知ることができる。