En effet, dans de nombreux exemples sur le Web ou dans les docs d'Adobe, on utilise le type ArrayCollection pour stocker des ensembles de donnés. Ce type a de nombreux avantages, au rang desquels on peut retenir la possibilité de mettre dedans tous types d'objet, ainsi qu'un ensemble de méthodes pour filtrer, trier, manipuler le contenu. C'est pratique et ça marche plutôt bien pour ces petits exemples.

Mais quand on commence à manipuler de grandes quantité de données, on s'aperçoit vite des limites de l'ArrayCollection. En effet, sans trop rentrer dans les détails, il faut savoir que par exemple, lors de l'ajout ou la suppression d'éléments dans une ArrayCollection, une série d'events sont dispatchés, ainsi que moult traitements internes. Cela cause de gros ralentissements, voir dans le pire des cas, vous plantez votre navigateur.

A coté de cela, on a notre bon vieux Array. Certes, plus basique, il permet quand même de faire pas mal de choses, (par exemple le reverse qui n'existe pas pour l'ArrayCollection), parfois de manière aussi simple, et surtout beaucoup plus rapidement. De plus, on retrouve ce type dans presque tous les langages, donc pour du classMapping, c'est parfait.

Enfin, avec le FlashPlayer 10, on peut utiliser un nouveau type, le vector, sur lequel je m'attarderai dans un prochain billet. Mais on peut déjà dire que celui-ci est dans la plupart des cas environ 2 fois plus rapide que l'Array. En revanche, on ne peut pas y stocker des type différents.

Bon, testons tout cela :

ArrayCollection vs Array (FP9+) : instanciation et tri

;

Vector vs ArrayCollection vs Array (FP10) : instanciation et moyenne

;

Les résultats parlent d'eux même, non ?

Je ne dis pas qu'il faut ignorer les ArrayCollection, elles peuvent s'avérer utiles dans certains cas.

Mais peut etre préférerez vous maintenant le type Array pour d'autre cas....