Google Chrome : parser et compiler le code JavaScript avant qu'il ne soit totalement chargé

Par:
fredericmazue

ven, 20/03/2015 - 15:12

Dans un billet Google rappelle que la vitesse a toujours été un des principes fondateurs du navigateur Google Chrome, depuis 2008.

Une vitesse qui doit être présente dans toutes les interactions de l'utilisateur avec navigateur, à commencer par le chargement des pages, souligne le billet. C'est pour aller dans ce sens que Google Chrome 41 et Google Chrome 42 (ce dernier est en version bêta pour le moment)  introduit deux nouvelles techniques, le script streaming et le cache de code.

Le script streaming veut en finir avec la vieille approche qui consistait à charger du code JavaScript, puis, une fois le code chargé, le parser, et enfin le compiler avec un compilateur JIT. Pendant le temps de chargement, la CPU se tourne les pouces explique Google. Avec le script streaming, le parsing du code commence de façon asynchrone, dans un thread dédié, dès que le téléchargement du code est commencé. De cette façon, la CPU ne reste plus inactive et le parsing est terminé quelques millisecondes seulement après que le téléchargement du code soit lui-même terminé. Dans le cas de grosses applications JavaScript et dans le contexte de connexions lentes, le gain sur le temps totalement de chargement d'une page web est de 10%, assure le billet, sans définir pour autant ce qu'est une grosse application ni ce qu'est une connexion lente.

Le cache de code vient quant à lui dispenser le moteur JavaScript V8 de compiler le code à chaque chargement de page, comme il le faisait auparavant. Il en était ainsi car le code compilé est hautement dépendant de l'état et du contexte de la machine au moment de la compilation, explique Google. Sans préciser en quoi cela consiste ni comment un remède y a été apporté, le billet nous apprend que désormais Chrome 42 introduit une technique avancée qui permet de stocker localement le code compilé. De cette façon, quand un utilisateur revient sur une page, les étapes de chargement, parsing et compilation du code ne sont plus faites, ce qui amène un gain total de 40%, et une économie précieuse pour les batteries des terminaux mobiles.