Salut,
Je viens d'effectuer des tests de rapidité en lançant les deux boucles suivantes :
Attention, les résultats publiés dans ce post sont totalement faux, je me suis trompé dans l'insertion du code à tester
1 2 3 4 5 6
|
//déclaration externe
Object obj = null;
for(int i=0; i<1000; i++) {
obj = new Integer(i);
} |
1 2 3 4 5
|
//déclaration local
for(int i=0; i<1000; i++) {
Object obj = new Integer(i);
} |
Chaque boucle est placée dans une méthode qui est elle-même appelée mille fois. Et le résultat est défrisant :
1 2 3
|
externe : 105413
local : 31 |
A titre de comparaison, si on compare non plus des boucles mais des méthodes appelées en boucles :
1 2 3 4 5 6 7 8 9 10 11 12
|
class Test {
int i = 0;
Object obj = null;
void local() {
Object obj = new Integer(i++);
}
void instance() {
obj = new Integer(i++);
} |
La différence est moins importante :
1 2 3
|
instance : 111
local : 8 |
Dans ce dernier cas, je pense que la déclaration d'une variable locale est de toute façon préférable car elle pose généralement moins de problèmes en cas d'accès par des threads concurrents.
Réédité pour supprimer le smiley
Partager