On en parlait il y a peu mais ça vaut le coup de faire un petit billet dédié : L’équipe de WebKit vient d’annoncer l’intégration de SquirrelFish. SquirrelFish c’est une réécriture de Javascript Core, leur moteur Javascript.
Un nouveau moteur
Et c’est là le genre d’information que j’aime. On ne cherche pas tant à montrer qu’on est les meilleurs, mais on montre sa propre progression dans le temps, et on donne des explications techniques sur ce qui a été fait et pourquoi ça donne de tels changements. C’est bon un billet à lire pour tous les curieux.
Ils sont passés d’un interpréteur de type AST à une machine virtuelle à base de code intermédiaire. Pour les fainéants, les anglophobes et les technophobes, le résumé grossier et approximatif est le suivant : Au lieu de devoir lire le +
puis regarder les deux composantes et enfin voir que avec ce +
il faut additionner les deux composantes pour obtenir un résultat, on va pouvoir directement coder l’addition dans le langage intermédiaire et donc permettre au moteur d’exécuter directement un code bien plus proche de ce que le développeur a effectivement écrit.
De nouvelles performances
Au niveau des chiffres, en cumulant ce changement de moteur et les optimisations diverses faites ensuite, on confirme les chiffres avancés au jugé sur le dernier comparatif : on arrive à un code presque 50% plus rapide que Firefox 3.0rc1, deux à drois fois plus performant que le dernier snapshot Opera, et 60% plus rapide que le précédent WebKit 3.1.
Ne restez cependant pas trop sur ces chiffres. Ils ne représentent que javascript lui même et pas le reste du navigateur ou l’interaction avec le DOM. L’important est juste de retenir qu’il y aura amélioration des performances et que les navigateurs qui se préparent, sans exception, ont tous fait des avancées importantes.
Ailleurs
Mozilla n’est pas en reste. Ils ont aussi une machine virtuelle pour Ecmascript dans les carton. Il s’agit du moteur de script de Flash 9, Tamarin, donné par Adboe/Macromedia au projet Mozilla. Le travail sur les performances n’est pas encore aussi abouti, mais on peut tout de même prévoir de bonnes choses pour le futur.
Ce dernier graphe est bien évidemment relatif et non absolu, comme votre cerveau analystique aura corrigé que 1.00 et 1.08 c’est quasiment la même chose, et 1.94 est le double et pas plus de 5x plus.
PS: Adboe/Macromedia ont fourché 😉
Quasiment la même chose sur le graphe. Dans l’article l’auteur dit que dans le cas de Tamarin la compilation du js en bytecode n’est pas décomptée dans le temps alors qu’elle l’est pour squirrelfish.
De plus la barre qui se rapproche est celle où le code source ecmascript est complet au niveau des anotations de type pour aider le compilateur. Dans du code réel sur le web, les variables ne sont pas typées donc on se retrouve plutot sur la seconde barrre (84% plus lent), ou entre la seconde et la quatrième si Tamarin fait un petit peut d’inférence de type.
Un peu hors sujet, mais les blogs de contributeurs Mozilla propose aussi des articles techniques. Il y a eu quelques articles sur Tamarin justement, un article sur Squirrelfish et d’autres articles sur les standards. http://planet.mozilla.org n’est pas mort 😉
PS : Il est trop bien ce logo !