Sujets sur : optimize actionscript code
Cours ActionScript 3 ‘optimize actionscript code’
11 astuces pour optimiser votre code ActionScript 3

Un Cours ActionScript 3 réclamés par les Développeurs suivant la Formation AS3 Facile.
Vous trouverez un ensemble de conseils à suivre pour optimiser votre code ActionScript 3 et le rendre plus performant 😉
J’ai testé chacun de ces exemples dans des applications flash. Il existe plusieurs benchmarks sur internet montrant les gains de performances.
1 – Évitez les multiplications dans les boucles
Mauvaise version
Le résultat est multiplié par un facteur 10 à chaque boucle. La multiplication n’est pas nécessaire.
Version correcte
La multiplication peut être remplacée par une addition qui est beaucoup moins gourmande en ressources mémoires.
Et nous obtenons exactement le même résultat.
2 – Le Casting
Mauvaise version
Les éléments du tableau sont demandés directement. C’est une mauvaise solution parce que le Player Flash ne connait pas l’objet et la refactorisation du code est impossible.
Versions correctes
Il suffit de caster l’objet à l’intérieur du tableau pour améliorer les performances.
Dans la majorité des cas, utilisez plutôt les Vecteurs pour typer vos tableaux.
3 – Réutilisez les instances créées
Mauvaise version
Dans l’exemple suivant, l’instance Point est créée à chaque itération. C’est très couteux en ressource et inutile.
Version correcte
Il n’est pas nécessaire de créer une nouvelle instance de Point à chaque itération. Une seule instance est nécessaire pour la boucle.
4 – L’appel de fonction
Lorsque c’est possible, évitez d’appeler directement les fonctions Math() de Flash Player. Elles sont couteuses en ressources.
Remplacez les fonctions Math par leurs équivalents avec les opérations (additions, multiplications…).
// version lente
y = Math.abs(x);
// version équivalente beaucoup plus rapide
y = x > 0.0 ? x : -x;
5 – Le typage
Mauvaise version
Dans l’exemple ci-dessous, la création de l’objet n’est pas typée. C’est une mauvaise solution parce que le Player Flash ne connait pas l’objet. C’est une pratique non recommandée pour le refactoring et la Programmation Orientée Objet.
Version correcte
Lors de la création de l’objet, typez ses propriétés correctement. Ainsi le Player Flash connait l’objet et peut lui appliquer des optimisations spécifiques, en fonction du type (Number, String,…).
6 – Déclaration de variables
Mauvaise version
Lorsque vous avez besoin de déclarer plusieurs variables, la déclaration une ligne par variable n’est pas une solution optimisée.
Version correcte
Pour déclarer plusieurs variables, il est plus optimisé d’utiliser la déclaration sur une seule ligne 😉
7 – Boucle For
Une règle très simple en ActionScript 3, utilisez des integers pour les itérations de vos boucles.
Mauvaise version
for (var i: Number = 0; i < n; i++)
void;
Version correcte
Pour une exécution plus rapide, utilisez int à la place de Number dans vos boucles.
for (var i: int = 0; i < n; i++)
void;
8 – Optimisation des multiplications
Si vous utilisez cette opération i*33, le résultat sera de type Number.
L’accès au tableau est optimisé pour les types int. Donc pour vos calculs dans les tableaux, pensez au casting du résultat en int.
Mauvaise version
for (;i<n2;i++)
Data(array[i*2]).x = 2;
Version optimisée
for (;i<n2;i++)
Data( array[ int(i*2) ] ).x = 2;
9 – Les constantes des autres classes
Une autre optimisation concerne l’utilisation d’une constante provenant d’une autre classe.
Mauvaise version
Version correcte
Le code précédent peut être optimisé en sortant la constante de la boucle.
Vous créez une variable en dehors de la boucle pour recevoir la constante.
10 – Les opérateurs sur les bits
L’utilisation des opérateurs sur les bits augmente significativement les performances.
A la place de la multiplication et de la division utilisation les syntaxes sur les bits.
Mauvaise version
Version optimisée
11 – Utilisez des Vector à la place des Array
Le Player Flash version 10 a ajouté un nouveau type de données les Vector (ou Vecteurs).
Les Vector sont plus rapides que les Array pour générer des listes des données et parcourir des collections.
Version Array non optimisée
Version équivalent avec Vector
Pour aller plus loin dans l’optimisation ActionScript 3
Il y a encore plusieurs autres optimisations à apporter dans votre développement Flash.
Je vous conseille d’étudier l’excellent livre de Thibault Imbert sur l’optimisation des publicités.
Avez-vous d’autres optimisations à suggérer ?
Partagez vos optimisations de code ActionScript 3 dans les commentaires ci-dessous.