[java]拡張for と while の比較

10000要素を持つマップオブジェクトを1000回参照すると、0.1秒くらい差が出ました。

拡張for: 2156(ms)
while: 2250(ms)

なんだ、拡張for速いじゃん。
Intel Core2 Duo 2.4GHz、メモリ2GB、WindowsXP SP2上にVMWareServerを起動。
VMWareServer上に構築したWindowXP SP2環境にて実施。

import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;

/**
 * マップに関するサンプルクラス
 * @author kazuki-kido
 */
public class MapSample {
    /**
     * マップ参照サンプル
     * @param args
     */
    public static void main(String[] args){
        Map<String, String> map = new LinkedHashMap<String, String>();
        // マップオブジェクトに値をセット
        for(int i=0; i<10000; i++){
            map.put(i + "回目", String.valueOf(i));
        }
        
        long start, end;
        StringBuilder temp;
                
        // 拡張for
        start = System.currentTimeMillis();
        for(int i=0; i<1000; i++){
            temp = new StringBuilder();
            for(String key : map.keySet()){
                temp.append(key).append(map.get(key));
            }
        }
        end = System.currentTimeMillis();
        System.out.println("拡張for: " + (end - start) + "(ms)");
        
        // while
        start = System.currentTimeMillis();
        for(int i=0; i<1000; i++){
            Set<String> set = map.keySet();
            Iterator<String> iterator = set.iterator();
            temp = new StringBuilder();
            while(iterator.hasNext()){
                String key = iterator.next();
                temp.append(key).append(map.get(key));
            }
        }
        end = System.currentTimeMillis();
        System.out.println("while: " + (end - start) + "(ms)");
    }
}