Maintenant j'aimerais un exemple qui me prouve qu'une variable doit etre obligatoirement declaree dans une boucle .. pour moi ca peut toujours etre a l'exterieur ..
non, j'ai eu le cas récemment je parcours un gros fichier servant à initialiser des objets (n lignes de propriétés par objet).
avec une déclaration à l'exterieur tous mes objets avaient exactement les mêmes valeurs (celles du dernier objet du fichier).
Si tu declare ta variable en dehors de la boucle alors tu modifie seulement la valeur dans ta boucle. tu garde la même référence pour toutes tes variables.
Si tu la déclare dans la boucle alors c'est comme si tu avait autant de variable que d'itérations.
Conclusion : le nombre d'objet crées est différent
Donc pour moi c'est confirmé par l'expérience :
déclarer des objets dans une boucle alors que cela n'est pas nécessaire est une abbération
NB : la mémoire est libérée lorsque le garbage collector passe et celui ci se déclenche uniquement lorsque la mémoire disponible est insuffisante.
une variable déclarée avec une protée plus faible est simplement éligible plus tôt pour le gc.
Cette optimisation est donc moins visible que d'autres.
Partager