javaのループは高速
javaのループが超高速なのは、知っていたけども
従来のJDK1.4で記述してた(型に安全じゃないList)Listのループが
微々たる違いだけど速いんだね。ArrayListだからなのか?
ただ、100万回くらいのループじゃ違いが出ない。
Genericsを使う方が型に安全だし、コンパイラが怒ってくれるからありがたい。
JAVA:jre1.5.0_10
Eclipse3.4で実行
public class LoopTest { public static void main(String[] args) { List<String> list1 = new ArrayList<String>(); for (int i = 0; i < 3000000; i++) { list1.add(""); } long start1 = System.currentTimeMillis(); for (String str : list1) { String s = str; } long end1 = System.currentTimeMillis() - start1; System.out.println("end1=" + end1); List list2 = new ArrayList(); for (int i = 0; i < 3000000; i++) { list2.add(""); } long start2 = System.currentTimeMillis(); for (Iterator resultIt = list2.iterator(); resultIt.hasNext();) { String s = (String) resultIt.next(); } long end2 = System.currentTimeMillis() - start2; System.out.println("end2=" + end2); long start3 = System.currentTimeMillis(); for (int i = 0; i < list2.size(); i++) { String s = (String) list2.get(i); } long end3 = System.currentTimeMillis() - start3; System.out.println("end3=" + end3); } }
実行結果
ソースの順番なども入れ替えたりしてみた結果は、以下の通り。
end1=125 end2=140 end3=79 end1=125 end2=125 end3=78 end1=125 end2=125 end3=62 end3=78 end2=125 end1=125 end2=125 end3=78 end1=140