Il y a une différence - en 10 fois. La différence absolue est minime, mais si votre application écrit à faible latence, le temps processeur cumulé perdu peut être significatif.
long start, end;
int X = 10000000;
ArrayList l = new ArrayList(X);
start = System.nanoTime();
for(int i = 0; i < X; i++){
String.class.newInstance();
}
end = System.nanoTime();
log("T: ", (end - start)/X);
l.clear();
start = System.nanoTime();
for(int i = 0; i < X; i++){
new String();
}
end = System.nanoTime();
log("T: ", (end - start)/X);
Sortie:
T: 105
T: 11
Testé sur Xeon W3565 @ 3.2Ghz, Java 1.6
Consultez http://www.ibm.com/developerworks/java/library/j-jtp02225.html ... ces types de benchmarks sont très difficiles à obtenir en raison de la manière dynamique dont le code est compilé/optimisé par le JVM. – Eddie
Comme je l'ai dit, c'était un exemple du monde réel, pas un micro benchmark ... – TofuBeer