Voici une petite astuce que je pratique depuis longtemps en me basant sur ma propre logique, mais je me suis décidé à la benchmarquer (euh ... ca s'écrit comme ca ? :roll:)

Il s'agit d'éviter le plus possible d'accéder à un élément de tableau (pendant une boucle par exemple) ou à sa longueur. Si l'on a besoin d'accéder plusieurs fois au même élément d'un tableau, il est plus performant de le mettre dans une variable, la modifier, puis la remettre dans le tableau (évidemment, si c'est un objet, vous n'avez pas besoin de la remettre dans le tableau ;)). Le principe est le même pour la longueur du tableau.

Voici le "bench" que j'ai fait// On crée un tableau de 100.000 cases
var tst = new Array(100000);
// On va accéder à un élément
// situé peu à prés au milieu (60.000)
tst[60000] = 10;
/** Accés au tableau à chaque boucle **/
var t = getTimer();
for (var i=0 ; i<200000 ; i++) {
        // Accés à la longueur
        tst.length;
        // Accés à l'élément
        tst[60000] += 1;
}
// Affichage du temps
trace("Accés au tableau : " + (getTimer() - t) + " ms.");
// Reinitialisation de la valeur
tst[60000] = 10;
/** Accés à une variable **/
t = getTimer();
// Initialisation de la variable
var elt = tst[60000];
// Initialisationde la longueur
var ln = tst.length;
for (var i=0 ; i<200000 ; i++) {
        // Acces à la valeur de la longueur
        ln;
        // Modification de la valeur
        elt += 1;
}
// On remet la valeur dans le tableau
tst[60000] = elt;
// Affichage du temps
trace("Accés aux variables : " + (getTimer() - t) + " ms.");
Ce qui nous donne en sortieAccés au tableau : 3217 ms. Accés aux variables : 2367 ms.Le gain est en général de l'ordre d'une seconde, ce qui est énorme ! 8O Ca ne parait pas grand chose, mais réflechissez à toutes les boucles for que vous faites sur un tableau, en testant la longueur comme condition d'arrêt ... ;) Il accéde à la propriété length à chaque boucle !!! :roll: Il vaut mieux mettre la longuer dans une variable qui va servir pour la condition du for. Sinon, si l'ordre vous importe peu, vous pouvez utiliser une boucle while qio commence par la longuer du tableau/**** Mauvaise utilisation ****/
for (var i=0 ; i<monTableau.length ; i++) {
   // ...
}
/**** Bonne utilisation ****/
var len:Number = monTableau.length;
for (var i=0 ; i<len ; i++) {
   // ...
}
/*** Autre bonne utilisation ****/
var i:Number = monTableau.length;
while (--i >= 0) {
   // ...
}

Vous pouvez aussi utilise for ( ... in ...), mais je ne sais pas comment ca marche ...:P

Ce n'est certainement pas nouveau pour beaucoup d'entre vous, mais ca peut toujours servir ... 8)