L'autoboxing contre manuel de boxe en Java

Pourquoi est le deuxième morceau de code plus rapide?

Map<Integer, Double> map = new HashMap<Integer, Double>();
for (int i = 0; i < 50000; i++) {
    for (double j = 0.0; j < 10000; j++) {
        map.put(i, j);
    }
}

Map<Integer, Double> map=new HashMap<Integer, Double>();
for (int i = 0; i < 50000; i++) {
    for (double j = 0.0; j < 10000; j++) {            
        map.put(new Integer(i), new Double(j));
    }
}
  • Essayez d'envelopper les deux parties autour de et microbenchmark de nouveau.
  • parce qu'à l'extérieur de votre artificiel micro-benchmark qui est incorrect, il n'a pas d'importance puisque ce sera optimisé loin mais JIT, éventuellement, dans le monde réel.
InformationsquelleAutor Andrei N | 2010-02-21