OdinMonkey booste les performances JavaScript de Firefox
Le module asm.js sera disponible dans Firefox 22

Le , par Hinault Romaric, Responsable Actualités
Dans sa quête de meilleures performances pour l’exécution d’applications JavaScript, la fondation Mozilla a mis sur pied OdinMonkey, un nouveau module asm.js pour le moteur JavaScript de Firefox.

D’après la description de Mozilla, asm.js est – purement - du code JavaScript « spécialement conçu », qui est compilé en langage natif C/C++ avec emscripten avant exécution. Le code asm.js exécuté avec un navigateur standard comme Chrome ou encore Firefox sans OdinMonkey est environ dix fois plus lent sur le premier et 12 fois plus lent sur le second par rapport au code natif.

C’est à ce stade qu’intervient le module d’optimisation OdinMonkey. Il promet d’accélérer l’exécution de JavaScript au delà « des rêves les plus fous ». Selon Mozilla, il peut améliorer les performances JavaScript du moteur actuel de Firefox de près de 1000 %.


Cette nouveauté permettra aux développeurs de créer des applications Web complexes (surtout des jeux), pouvant s’exécuter dans le navigateur avec une vitesse quasi similaire à une exécution en natif. Pour cela, il faudra juste se familiariser avec asm.js. Ce projet se positionne comme un sérieux concurrent de Native Client (technologie permettant d'exécuter du code C/C++ à l'intérieur du navigateur dans un environnement protégé) de Google.

OdinMonkey a déjà été intégré dans la version Nightly de Firefox. Les développeurs enregistrés sur ce canal peuvent déjà tester la fonctionnalité sur un système d’exploitation Linux ou Windows. OS X n’est pas encore pris en charge.

OdinMonkey sera disponible en juin avec la version finale de Firefox 22.

Le projet asm.js

Le projet emscripten sur GitHub

Télécharger la version Nightly de Firefox

Source : Mozilla

Et vous ?

Que pensez-vous du projet asm.js ?

Allez-vous écrire votre code JavaScript en suivant les instructions que asm.js impose pour bénéficier des optimisations d'OdinMonkey ?


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de Uther Uther
http://www.developpez.com
Expert Confirmé Sénior
le 27/03/2013 17:51
Que pensez-vous du projet asm.js ?

Au début ça m'a choqué, mais plus j'y pense plus ça parait un excellente idée pour obtenir une sorte de bytecode commun a plusieurs langages mais sans créer de nouvelles incompatibilité: Les navigateur qui ne gerent pas asm.js accepteront le code sans problème, c'est juste que ça ne sera pas optimal en vitesse.

A priori les gens d'epic on fait un port de l'unreal engine, ça semble prometteur.

Je regrette juste que le projet ne soit tiré que par Mozilla pour le moment.

Allez-vous écrire votre code JavaScript en suivant les instructions que asm.js impose pour bénéficier des optimisations d'OdinMonkey ?

L'idée de base du projet n'est pas de faire manuellement du code asm.js (ce qui serait particulièrement indigeste), mais de faire que des langages puissent se compiler en asm.js, comme c'est déjà le cas pour le C/C++ via enscriptem.
Avatar de _skip _skip
http://www.developpez.com
Expert Confirmé Sénior
le 28/03/2013 10:35
Justement je me demande si ça pourrait être le ciment manquant entre le JS pur et les surcouches de style Dart. Une sorte de llvm pour navigateur.
Je me vois pas trop écrire des kilomètres de code JS, en revanche dans un langage statique qui ensuite se compile vers une forme bien définie de JS optimisé c'est bien intéressant.
Avatar de Xitog Xitog
http://www.developpez.com
Membre actif
le 09/04/2013 12:27
Pour ceux qui, comme moi, la phrase "D’après la description de Mozilla, asm.js est – purement - du code JavaScript « spécialement conçu », qui est compilé en langage natif C/C++ avec emscripten avant exécution." laisse perplexe, j'ai fait un petit dessin après enquête pour mieux comprendre. J'espère que ça aidera !

http://i.imgur.com/kmRqv92.png?1

En dernière étape, OdinMonkey traduit le javascript produit (qui est un sous-ensemble utilisant asm.js) en code natif, d'où le gain de performance indéniable.

Sources :
http://ejohn.org/blog/asmjs-javascript-compile-target/
http://kripken.github.io/mloc_emscripten_talk/#/
http://www.extremetech.com/computing...y-1000-or-more
Avatar de Xitog Xitog
http://www.developpez.com
Membre actif
le 09/04/2013 13:02
Mais en fait c'est normal que l'on ne comprenne rien : la news est très mal rédigée, voir carrément fautive !

Dans sa quête de meilleures performances pour l’exécution d’applications JavaScript, la fondation Mozilla a mis sur pied OdinMonkey, un nouveau module asm.js pour le moteur JavaScript de Firefox.

Faux : OdinMonkey est un compilateur à la volée de Javascript qui fait parti du moteur Javascript SpiderMonkey de Firefox. Le moteur SpiderMonkey comporte au moins deux autres compilateurs à la volée : JaegerMonkey et IonMonkey. IonMonkey produit un code plus optimisé mais avec un coût temporel non négligeable, le choix entre les deux est dynamique [1].

D’après la description de Mozilla, asm.js est – purement - du code JavaScript « spécialement conçu », qui est compilé en langage natif C/C++ avec emscripten avant exécution. Le code asm.js exécuté avec un navigateur standard comme Chrome ou encore Firefox sans OdinMonkey est environ dix fois plus lent sur le premier et 12 fois plus lent sur le second par rapport au code natif.

Faux : Emscripten*** s'inscrit dans une chaîne qui compile du C/C++ vers du Javascript (et pas l'inverse !!!), plus particulièrement ici un sous-ensemble de Javascript appelé asm.js.

C’est à ce stade qu’intervient le module d’optimisation OdinMonkey. Il promet d’accélérer l’exécution de JavaScript au delà « des rêves les plus fous ». Selon Mozilla, il peut améliorer les performances JavaScript du moteur actuel de Firefox de près de 1000 %.

Et là OdinMonkey traduit le javascript spécialement conçu en code natif.

Merci de ne pas tout mélanger !

*** en détails Emscripten s'occupe précisément de traduire la représentation intermédiaire LLVM en Javascript.
1. Source : Blog de Mozilla sur Javascript
Avatar de Uther Uther
http://www.developpez.com
Expert Confirmé Sénior
le 09/04/2013 16:51
Citation Envoyé par Xitog
Faux : OdinMonkey est un module pour le moteur Javascript de Firefox, nommé IonMonkey.

Quitte a reprendre, autant le faire bien:
OdinMonkey est un module du moteur Javascript de Firefox nommé SpiderMonkey.

IonMonkey n'est lui aussi qu'un module de SpiderMonkey en charge de la compilation JIT des portion de code Javascript nécessitant des performances très élevés.
Avatar de Xitog Xitog
http://www.developpez.com
Membre actif
le 10/04/2013 11:29
Merci, j'ai corrigé dans le billet en question (pour ne pas laisser une phrase fausse) mais j'indique ma dette ici. J'ai été induit en erreur par l'article que je cite en source qui dit :
OdinMonkey is a module for Firefox’s IonMonkey JS engine

Moralité : toujours tout vérifier.

J'en profite aussi pour signaler aussi une actualité en date du 5 avril 2013 : SpiderMonkey va se doter d'un autre compilateur à la volée, Baseline.
Offres d'emploi IT
Développeur / testeur
CDI
Mobiskill - Ile de France - Paris (75000)
Parue le 03/10/2014
Concepteur fonctionnel (h/f)
CDI
CAREER BOOSTER - Ile de France - Paris (75000)
Parue le 06/10/2014
Moe intégrateur technique consolidation comptable
CDI
Société Générale - Ile de France - Paris (75000)
Parue le 21/10/2014

Voir plus d'offres Voir la carte des offres IT
 
 
 
 
Partenaires

PlanetHoster
Ikoula