L’AS3 est il obsolète?

Il y a un an, à l’Adobe Max, un ingénieur Adobe présentait un projet de R&D permettant de porter automatiquement du code C/C++ vers Flash.

Cette démonstration présentait entre autres Quake 1 porté en Flash et tournant à un framerate confortable (vers 5’00″ dans la vidéo). Ce qui est à priori hors de la portée de Flash.

On en sait aujourd’hui beaucoup plus sur la technologie, disponible depuis peu sur Adobe Labs (http://labs.adobe.com/technologies/alchemy/).

En creusant un peu, la communauté Flash s’est interrogée sur les informations suivantes :

  • Alchemy produit des swf uniquement compatibles avec Flash Player 10
  • Pour générer un swf, Alchemy génère du code intermédiaire basé sur l’AS3
  • Adobe promet des performances de 2 à 10 fois supérieures à l’AS3

Et c’est là le problème : comment l’AS3 peut-il tourner 10x plus vite que … l’AS3 ?

En creusant un peu plus (voir les posts très intéressants sur http://ncannasse.fr/blog/adobe_alchemy et http://www.unitzeroone.com/blog/2008/11/28/adobe-alchemy-is-it-actionscript-heresy/), on se rend compte que la vitesse est gagnée par 3 techniques :

  • le code est mouliné dans un optimiseur puissant
  • les appels à des méthodes (couteux en temps machine) ou à certaines variables sont parfois remplacés le contenu de la fonction (inlining)
  • la gestion de la mémoire se fait dans des équivalents de BytesArray optimisés (sans vérifications du format des données en entrée/sortie), objets auxquels AS3 n’a pas accès

En gros ce que ça implique, c’est que les compilateurs AS3 actuels ont une énorme marge de progression. Cette progression sera automatique pour les développeurs, un meilleur compilateur, et hop tout va (un peu) plus vite. Mike Chambers d’Adobe à affirmé qu’Alchemy leur permettra de tirer des leçons pour les futures version de Flash, mais il est loin d’être clair que Flash CS5 ou Flex 4 (voir 5) fourniront un compilateur optimisé.

A t-on besoin de ces performances ? Pour le code de gestion de nos sites et applications, surement pas. Il tournerait même à peu près aussi bien en AS2.

Par contre pour tous les moteurs lourds que nous utilisons de plus en plus (3D, physique, traitement du son, crypto), la question est cruciale. Et si PaperVision3D pouvait tourner 5 fois plus vite comme ça, gratuitement?

Pour ces moteurs, la question est posée, et Adobe semble même compter vers un portage sous Alchemy. Mais en fait il y aurait 2 options possibles pour eux :

  • tout redévelopper en C/C++ et donc compiler sous Alchemy
  • moins compliqué : convertir en haXe (un langage proche de l’AS3 développé par Nicolas Cannasse qui permet entre autres de générer des SWF). haXe gère dès maintenant l’inlining et les ByteArrays optimisés

Les gains de performances pourraient être significatifs dans les deux cas, mais cela se ferait aux frais de la customisation. Pour modifier une classe PaperVision3D, il faudrait ensuite tout recompiler sous Alchemy ou haXe… Je n’ai vu aucune annonce dans ce sens pour l’instant.

Bref c’est une nouvelle ère qui s’ouvre et l’année 2009 pourrait apporter encore de grosses claques visuelles, à suivre …

Leave a comment

Your comment