2009年3月17日火曜日

Enumerationとforループ

Listの中身を総なめするのに、
JavaSDKだとiteratorを使うのが普通ですが、
dojaだとiteratorはないので、Enumerationとforループのどちらかを選ぶことになります。
どっちが早いのか気になるので、試してみました。


public class ListMain extends IApplication {

public void start() {
Vector vec = new Vector();

for(int i = 0; i < 200000; i++){
vec.addElement(new Integer(i));
}

long startTime = System.currentTimeMillis();
for(Enumeration en = vec.elements(); en.hasMoreElements();){
int hoge = ((Integer)en.nextElement()).intValue();
}
System.out.println("Time to enumerate:"+(System.currentTimeMillis()-startTime));


startTime = System.currentTimeMillis();
for(int i = 0; i < vec.size(); i++){
int hoge = ((Integer)vec.elementAt(i)).intValue();
}
System.out.println("Time to for :"+(System.currentTimeMillis()-startTime));

}

}

実行結果は、

Time to enumerate:250
Time to for :172

となり、forループのほうが早いことが分かりました。
なんと。
Enumerationの使い道がありません。

0 件のコメント: