Le moteur JavaScript d’Internet Explorer met le turbo

Vitesse, performances

Architecture hybride et traitement parallèle sont au menu de la dernière version de Chakra, le moteur JavaScript d’Internet Explorer. De quoi dépasser la concurrence ?

Microsoft poursuit son opération de reconquête des utilisateurs dans le secteur des navigateurs web. Internet Explorer 9, dernier opus en date de la firme de Redmond, est ainsi raisonnablement rapide et respectueux des standards, avec même une touche de HTML5. Pas de quoi toutefois détrôner les ténors du genre, qui font au moins aussi bien.

Avec IE10, la société joue toujours plus la carte de la compatibilité HTML5, mais aussi celle des performances. Le moteur JavaScript Chakra a ainsi été grandement remanié depuis son introduction dans IE9.

À la fois réactif et véloce

Il existe aujourd’hui deux modes de fonctionnement pour un moteur JavaScript : soit le code est interprété, opération réalisable dès le chargement de la page web, mais avec comme résultante des performances médiocres ; soit le code est compilé en instructions machine, ce qui amène d’excellentes performances, mais ralentit grandement le temps d’affichage de la page web.

Tous les moteurs JavaScript adoptent aujourd’hui un double moteur mêlant interpréteur et compilateur, le choix de l’un ou l’autre étant fait en fonction de la complexité du code à exécuter.

Chakra adopte une approche sophistiquée : l’interpréteur entre en action sans délai sur l’ensemble du code JavaScript, afin de réduire le temps de chargement de la page web. Si une fonction est appelée plusieurs fois, son code est compilé en parallèle à l’interprétation.

Une fois ce travail effectué, la version compilée du code prend le relai de la mouture interprétée. Les performances sont alors maximales, ainsi que les options d’optimisation, le compilateur intégré à Chakra pouvant prendre tout le temps nécessaire pour générer les instructions machine.

Une offre partiellement multicœur

Le moteur JavaScript Chakra est également capable de tirer parti des puces multicœurs. L’interpréteur, le compilateur et le ramasse-miettes fonctionnent ainsi sur des processus différents, en parallèle. Avec du code intensif, les performances de l’ensemble seront nettement améliorées, grâce à l’exploitation à plein de trois cœurs.

Seul regret, rien n’indique que le code généré par le compilateur soit multithreadé, et donc capable d’utiliser plusieurs cœurs. Il est à noter toutefois qu’il est maintenant compatible avec les architectures processeur x86 32 bits, x86 64 bits et ARM. Alors que seule la version x86 32 bits d’IE9 propose des performances JavaScript correctes, les trois moutures d’IE10 devraient faire jeu égal.

Reste maintenant à savoir si toutes ces améliorations (et bien d’autres) permettront à IE10 d’afficher une meilleure vitesse de traitement JavaScript que ses concurrents. À ce jour, Chrome reste probablement le leader dans ce secteur, devant Firefox (qui a beaucoup progressé), Opera et Safari (tous deux d’un excellent niveau) et IE9, qui ferme la marche (mais sans avoir à en rougir).

Crédit photo : © chungking – Fotolia.com