Ajouter un commentaire

Chrome va améliorer la performance de son JavaScript avec de la compilation concurrente

Par:
fredericmazue

dim, 16/02/2014 - 18:02

Lu sur le blog de Chromium, la version 33 de Chrome, actuellement en beta, devrait apporter des améliorations significatives en matière de performances à l'exécution du JavaScript, notamment pour les grosses applications.

Actuellement V8, le moteur JavaScript de Chrome, fait une compilation à la volée, en deux passes, du code JavaScript pour le traduire en code machine. La première passe se fait avant la toute première exécution du code. Elle est rapide, mais elle ne s'occupe pas de faire des optimisations.

La seconde passe s'occupe des portions de code qui sont les plus utilisées, et elle met en oeuvre des techniques avancées, ce qui demande du temps, mais ce qui génère un code beaucoup plus rapide.

Malheureusement, explique le billet susmentionné, cette deuxième passe peut se révéler  pénalisante, tout spécialement sur les gros morceaux de code. Car les deux passes de compilation et d'optimisation sont effectuées dans le thread principal. Des applications telles que des jeux peuvent souffrir de saccades, ou même perdre des affichages.

La solution, selon Google, est d'appliquer ici un processus de compilation concurrente. La compilation d'optimisation sera effectuée en arrière-plan. Pendant ce temps l'exécution de l'application continue normalement, et dès que l'optimisation est terminée, le nouveau code vient remplacer l'ancien dans le thread d'exécution.

Un procédé qui selon Google, apportera une bien meilleure fluidité aux applications lourdes, et même jusqu'à 27% de gain de performances.

Sans compilation concurrente des "trous" produisant des saccades à l'exécution apparaissent.

Avec la compilation concurrente, les saccades sont absorbés presque en totalité

Filtered HTML

Plain text

CAPTCHA
Cette question permet de vérifier que vous n'êtes pas un robot spammeur :-)
  GGG    SSS    GGG   EEEE  FFFF 
G S G E F
G GG SSS G GG EEE FFF
G G S G G E F
GGG SSSS GGG EEEE F