26 September 2005
Toutes
L'amélioration des performances dans Macromedia Flash Player 8 profite à tous, sans même avoir à faire quoique ce soit. Un des principaux facteurs d'amélioration est le mécanisme de récupération d'espace, qui améliore l'exécution du code ActionScript tout en réduisant l'usage fait de la mémoire au niveau du lecteur.
En outre, plusieurs changements spécifiques à la plate-forme Macintosh ont permis d'obtenir une meilleure parité entre les performances entre Windows et Macintosh. Ces changements peuvent entraîner jusqu'à 50 % d'amélioration des performances d'affichage des contenus et des applications dans Flash Player 8.
Le nouveau récupérateur d'espace de Flash Player 8 est à la base des améliorations des performances d'exécution du code ActionScript et de la réduction de l'usage fait de la mémoire. L'augmentation progressive de la taille et de la complexité des applications Flash a poussé les limites de l'algorithme de décompte des références utilisé pour la récupération d'espace dans Flash Player 7. Le passage d'un décompte simple à un décompte différé a permis d'éliminer plus de 90 % du décompte de références dans Flash Player.
La surcharge due au décompte de références était d'environ 20 % du total du temps d'exécution dans Flash Player 7, ce qui avait fréquemment comme résultat d'entraîner des pauses du rendu pour les applications les plus volumineuses. Le nouveau récupérateur d'espace réduit cette surcharge jusqu'à environ 1 à 2 % du temps total d'exécution !
Flash Player 8 utilise également un mécanisme de récupération progressive de l'espace, qui sépare l'opération d'identification des objets de l'étape de suppression, étape qui peut être effectuée lors d'un cycle non utilisé.
L'efficacité de la récupération d'espace et l'usage fait de la mémoire étant directement liés, Flash Player 8 utilise environ 50 % de la quantité de mémoire qu'utilisait Flash Player 7. La méthode de récupération d'espace utilisée par Flash Player 7 résultait en un usage pratiquement linéaire de la mémoire. Par contre, une récupération progressive de l'espace permet d'obtenir un usage de la mémoire qu'on peut également appeler progressif étant donné que des portions de la mémoire sont libérées de façon périodique au cours des cycles d'inactivité (figure 1).
Pour le même test sur Mac OS X, la récupération d'espace a lieu de façon quelque peu différente : Flash Player libère pratiquement toute la mémoire à la fin (figure 2)
Le nouveau récupérateur d'espace et une consommation réduite de la mémoire permettent d'obtenir une amélioration des performances des contenus existants dans Flash Player 8, sans même avoir besoin de procéder à une recompilation.
Bien que les performances des contenus et des applications soient, dans l'ensemble, améliorées, le nouveau récupérateur d'espace peut également avoir des effets négatifs dans certains domaines. Alors que certaines opérations seront plus rapides, d'autres seront en fait plus lentes par rapport à Flash Player 7. En effet, l'infrastructure de prise en charge de la mémoire a également changé. Une comparaison exacte de certains aspects des différentes fonctionnalités entre Flash Player 8 et les versions précédentes du lecteur est malheureusement impossible.
Prenons par exemple le cas d'un test de calcul d'une équation mathématique exécutée à cinq reprises. Dans Flash Player 7, le calcul prend 300 millisecondes. Chaque exécution suivante prend également 300 millisecondes. Dans Flash Player 8, avec le récupérateur d'espace, ce même test prend environ 310 millisecondes lors de la première exécution, 300 millisecondes la fois suivante, etc. Alors que la première exécution est plus lente que dans Flash Player 7, les exécutions suivantes sont plus rapides, avec une meilleure moyenne que dans Flash Player 7.
Quelques exemples des tests de Flash Player apparaissent à la fin de cet article. Le principal objectif est d'améliorer les performances dans leur ensemble, pas forcément les performances de chaque sous-ensemble de fonctions. Les micro-tests nous permettent de vérifier que les modifications apportées ne créent pas plus de problèmes que de solutions et il est important de noter que nous avons également ajouté d'autres tests permettant de vérifier l'impact sur les performances dans leur ensemble.
Nous nous sommes particulièrement concentrés sur l'obtention de performances équivalentes entre les versions Windows et Mac OS du lecteur, mais aussi d'une meilleure stabilité. Nous avons remanié le module Mac pour l'architecture « Mach-O », qui permet au lecteur de profiter des nouvelles technologies et des nouvelles fonctions de la plate-forme. Nous avons également consacré beaucoup de ressources à l'optimisation des routines de rendu sur Mac OS.
Flash Player 8 utilise certaines fonctions OpenGL dans Safari sur Mac OS X 10.2 et les versions plus récentes et ce, afin d'améliorer la lecture des contenus vidéo et réduire la charge du processeur. Il est important de remarquer qu'il ne s'agit pas d'une prise en charge complète d'OpenGL, mais bien de la prise en charge de certaines fonctions spécifiques à un affichage plus rapide. Le fait d'utiliser OpenGL améliore la lecture et l'animation, tout en réduisant les opérations de tracé de lignes horizontales.
Comme c'est le cas du mécanisme de récupération d'espace, cette fonction améliore les performances de rendu dans Safari avec cependant une réduction des performances dans certains cas . OpenGL a également certaines limites et, sur certains systèmes avec Mac OS X plus anciens ou plus lents , limite la cadence à 30 images par seconde. Pourquoi seulement pour Safari ? Cette fonction oblige le navigateur à avertir le lecteur lorsque l'utilisateur crée un nouvel onglet ou passe d'un onglet à un autre, et Safari était le seul navigateur prenant cette fonction en charge sur le Macintosh à la date de sortie.
Les exemples suivants de micro tests des performances de Flash Player, et leurs résultats, sont destinés à illustrer les types de tests que Macromedia a réalisés au cours du développement du lecteur :
Exemples et résultats de micro tests des performances de Flash Player
Bien entendu, il ne s'agit pas d'une liste exhaustive des améliorations affectant les fonctions du lecteur. De nombreux changements et autres optimisations, tels que le changement des structures de données internes pour une utilisation réduite de la mémoire, ou l'utilisation de matrices à virgule flottante pour améliorer la précision du rendu, se cachent bien loin sous la surface. Alors que certaines améliorations rendent certaines fonctions plus rapides, d'autres font des compromis de façon à prendre en charge de nouvelles fonctionnalités. Dans l'ensemble, les performances et les optimisations présentes dans Flash Player 8 permettent d'obtenir de meilleurs résultats avec vos contenus et applications.
Pour en savoir plus sur Flash Player, consultez le centre des développeurs Flash Player.
Pour en savoir plus sur les fonctions de Flash Player 8, consultez la page des fonctions de Flash Player.