2 Sep 2016

Du nouveau pour le moteur JavaScript v8 de chrome

Google vient de divulguer les détails quant à l’évolution de son moteur JavaScript V8. Point intéressant, celui-ci tend à réduire l’empreinte mémoire.

Dans cet article (http://v8project.blogspot.fr/), l’auteur nous explique comment le moteur JavaScript v8 compile le JavaScript en code machine natif, et ce “juste à temps” (Just in Time ou JIT, dans la langue de Shakespeare) lors de l’exécution. Le code est d’abord compilé afin d’obtenir un code machine non optimisé. Une analyse lors de l’exécution vient alors optimiser le code (éventuellement en recompilant dynamiquement) pour gagner en performance.

Ce process est complexe (commutations de contextes entre compilateurs et les deux optimiseurs), et couteux en mémoire. Ce qui n’est pas profitable pour des éléments de code exécutés une seule fois.

Pour remplacer le compilateur de base, l’équipe de V8 a mis au point un nouvel interpréteur JavaScript appelé “Ignition”. Son but ? Compiler le JavaScript en un bytecode concis. Grâce à cette astuce l’empreinte mémoire est réduite de 25 à 50% (par rapport au compilateur de base).
Ce bytecode est ensuite exécuté par un interpréteur haute performance. Coté temps de chargement, on est très proche de ce qui est obtenu par le compilateur de base.

ignitionpipeline

On aura compris qu’Ignition n’est pas là pour nous faire gagner du temps de chargement mais bel et bien de la mémoire, il sera donc activé par défaut dans Chrome 53 sur les appareils Android ne disposant que 512 méga-octets (ou moins) de mémoire vive. D’après les premiers tests, Ignition permet de réduire de 5% l’empreinte mémoire de chaque onglet du navigateur.

 

Share