Avec asm.js, Mozilla booste les performances des moteurs JavaScript

Crédit photo : © Martin Bech - Fotolia.com

Asm.js est un sous-ensemble de JavaScript spécifiquement optimisé par Firefox (et bientôt par Chrome et Opera). Il permet d’augmenter les performances du code généré par Emscripten.

La fondation Mozilla vient de lever le voile sur une nouvelle technologie permettant d’accélérer le fonctionnement du code JavaScript. Une offre qui permettra d’améliorer les performances des applications web les plus lourdes.

En premier lieu, les jeux en ligne. Mozilla s’est d’ailleurs associé avec Epic Games pour proposer une version JavaScript de l’Unreal Engine 3. La fondation s’est également rapprochée d’autres éditeurs, comme Disney, EA et ZeptoLab.

Optimiser un sous-ensemble de JavaScript

Conscients que les compilateurs ‘just-in-time’ des moteurs JavaScript restent des éléments trop complexes pour espérer faire fonctionner le code à une vitesse proche du natif, les développeurs ont opté pour une autre approche : asm.js.

Avec la version de développement de Firefox, ce sous-ensemble de JavaScript est compilé à la volée (en code x86 32 bits ou 64 bits, une mouture ARM étant en cours de finalisation), le tout avec des optimisations massives qui lui permettent d’approcher la moitié de la vitesse d’exécution du code natif.

Cette technologie est particulièrement adaptée au code généré par des compilateurs C/C++ vers JavaScript, comme Emscripten.

Pas seulement le code C/C++

Le bond en termes de performances est assez impressionnant, comme en témoigne ce tableau fourni par Alon Zakai de Mozilla (qui travaille par ailleurs au développement d’Emscripten). Il estime que la vitesse de fonctionnement du moteur JavaScript additionné d’asm.js est équivalente à celle des moteurs Java ou .NET. Elle devrait même encore progresser par la suite.

asm.js

LLVM étant mis en œuvre au sein d’Emscripten, d’autres langages de programmation pourront profiter de cette avancée. Ada, C#, Fortran, Java, Lua, Objective-C, Python, Ruby…

Le support de C# et Java pourrait permettre de transposer les applications Java et .NET en JavaScript, et ainsi de se passer des greffons correspondants. L’absence (actuelle) de ramasse-miette limitera toutefois les possibilités dans ce secteur.

Pas seulement Firefox

Notez que l’approche d’asm.js est intéressante. De fait, cet outil est compatible avec tous les butineurs. Toutefois, seuls ceux optimisant les éléments de syntaxe introduits par asm.js pourront proposer des avancées en matière de vitesse de fonctionnement.

C’est, comme nous l’avons vu, le cas avec la version de développement de Firefox. Cependant, les ingénieurs travaillant sur le moteur JavaScript V8 devraient eux aussi ajouter des optimisations pour asm.js. Les versions futures de Chrome, Firefox et Opera devraient donc être capables de tirer profit de cette technologie.

Crédit photo : © Martin Bech - Fotolia.com


Voir aussi
Quiz Silicon.fr – Êtes-vous un expert du navigateur web Firefox ?