Sujets sur : optimisation actionscript 3

Cours ActionScript 3 ‘optimisation actionscript 3’

11 astuces pour optimiser votre code ActionScript 3

2 questions

Ecrit le 8 novembre par Matthieu
Publié dans le(s) sujet(s) 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.

[codesyntax lang= »actionscript3″ title= »multiplication » bookmarkname= »multiplication »]

[/codesyntax]

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.

[codesyntax lang= »actionscript3″ title= »addition » bookmarkname= »addition »]

[/codesyntax]

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.

[codesyntax lang= »actionscript3″ title= »casting » bookmarkname= »casting »]

[/codesyntax]

Versions correctes

Il suffit de caster l’objet à l’intérieur du tableau pour améliorer les performances.

[codesyntax lang= »actionscript3″ title= »casting » bookmarkname= »casting »]

[/codesyntax]

Dans la majorité des cas, utilisez plutôt les Vecteurs pour typer vos tableaux.

[codesyntax lang= »actionscript3″ title= »casting » bookmarkname= »casting »]

[/codesyntax]

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.

[codesyntax lang= »actionscript3″ title= »instances » bookmarkname= »instances »]

[/codesyntax]

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.

[codesyntax lang= »actionscript3″ title= »instance » bookmarkname= »instance »]

[/codesyntax]

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…).

[codesyntax lang= »actionscript3″ title= »fonction » bookmarkname= »fonction »]

[/codesyntax]

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.

[codesyntax lang= »actionscript3″ title= »typage » bookmarkname= »typage »]

[/codesyntax]

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,…).

[codesyntax lang= »actionscript3″ title= »typage » bookmarkname= »typage »]

[/codesyntax]

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.

[codesyntax lang= »actionscript3″ title= »declaration variables » bookmarkname= »declaration variables »]

[/codesyntax]

Version correcte

Pour déclarer plusieurs variables, il est plus optimisé d’utiliser la déclaration sur une seule ligne 😉

[codesyntax lang= »actionscript3″ title= »declaration variable » bookmarkname= »declaration variable »]

[/codesyntax]

7 – Boucle For

Une règle très simple en ActionScript 3, utilisez des integers pour les itérations de vos boucles.

Mauvaise version

[codesyntax lang= »actionscript3″ title= »boucle for » bookmarkname= »boucle for »]

[/codesyntax]

Version correcte

Pour une exécution plus rapide, utilisez int à la place de Number dans vos boucles.

[codesyntax lang= »actionscript3″ title= »boucle for » bookmarkname= »boucle for »]

[/codesyntax]

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

[codesyntax lang= »actionscript3″ title= »multiplications » bookmarkname= »multiplications »]

[/codesyntax]

Version optimisée

[codesyntax lang= »actionscript3″ title= »multiplication » bookmarkname= »multiplication »]

[/codesyntax]

9 – Les constantes des autres classes

Une autre optimisation concerne l’utilisation d’une constante provenant d’une autre classe.

Mauvaise version

[codesyntax lang= »actionscript3″ title= »cosntantes » bookmarkname= »constantes »]

[/codesyntax]

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.

[codesyntax lang= »actionscript3″ title= »constantes » bookmarkname= »constantes »]

[/codesyntax]

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

[codesyntax lang= »actionscript3″ title= »opérateurs sur les bits » bookmarkname= »opérateurs sur les bits »]

[/codesyntax]

Version optimisée

[codesyntax lang= »actionscript3″ title= »opérateurs sur les bits » bookmarkname= »opérateurs sur les bits »]

[/codesyntax]

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

[codesyntax lang= »actionscript3″ title= »Vector » bookmarkname= »Vector »]

[/codesyntax]

Version équivalent avec Vector

[codesyntax lang= »actionscript3″ title= »Vector » bookmarkname= »Vector »]

[/codesyntax]

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.