Optimisation de code (les boucles)

© Christian PAULUS. Document créé le 28 septembre 2004 , mis à jour le 14 mars 2007.

Quand on a dix pas à faire, neuf font la moitié du chemin. Proverbe chinois

Accueil du site > Astuces > Flash > Optimisation de code (les boucles)

Astuce / Flash 6+

Il est parfois - souvent - intéressant d’optimiser son code. Prenons par exemple l’appel à un simple for() dans deux cas distincts : dans le premier, indiquons explicitement la limite de la boucle, dans le second, utilisons plutôt une variable prédéfinie. Pour être plus clair, voici un code ActionScript :

// Première init
$test_array = new Array (2048);
$string = "Portez ce vieux whisky au juge blond qui fume";
for (var $ii = 0; $ii < 2048; $ii++){
$test_array[$ii] = $string;
}
trace ("Test de remplissage de " + $test_array.length + " octets");
//
// exemple #1, récupère la longueur du tableau à chaque boucle
//
$startTime = getTimer();
for (var $ii = 0; $ii < $test_array.length; $ii++){
$test_array[$ii] = $string;
}
$ellapsedTime = getTimer () - $startTime;
trace ("Temps passé en test #1 : " + $ellapsedTime + " millisecondes");
//
// exemple #2, note la longueur avant la boucle
//
var $length = $test_array.length;
$startTime = getTimer();
for (var $ii = 0; $ii < $length; $ii++){
$test_array[$ii] = $string;
}
$ellapsedTime = getTimer () - $startTime;
trace ("Temps passé en test #2 : " + $ellapsedTime + " millisecondes");

Dans le premier cas, nous employons la méthode length() propre à l’objet Array dans la boucle elle-même. Dans le second cas, la valeur renvoyée par la méthode length() est notée dans une variable locale et c’est cette variable locale qui est utilisée en lieu et place de la méthode. Le résultat, qui peut d’ailleurs être différent sur votre poste de travail, est édifiant :

Test de remplissage de 2048 octets
Temps passé en test #1 : 181 millisecondes
Temps passé en test #2 : 138 millisecondes

Notez le temps perdu dans le premier test, en millisecondes il est vrai.

Vous pouvez télécharger le fichier source (fla) ici pour compléter le test si besoin.

Zip - 4.2 ko

Plussoyez !

Les forums sont fermés.