Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Ignition, l'interpréteur JavaScript développé par Google, permet de réduire l'utilisation de la mémoire
Faite par le moteur JavaScript V8

Le , par Stéphane le calme

41PARTAGES

7  0 
Dans le but d’améliorer la consommation de mémoire dans son moteur JavaScript V8, Google a développé Ignition, un interpréteur JavaScript qui exécute un bytecode de bas niveau, permettant ainsi de réduire le temps de compilation. L’équipe V8 a expliqué que cet interpréteur, qui peut remplacer le compilateur de base V8, exécute le code en se servant de moins de mémoire, pavant ainsi la voie vers un pipeline de scripts d’exécution plus simple.

Comme l’a avancé Ross McIlroy, qui fait partie de l’équipe V8 Ignition Jump Starter, « avec Ignition, V8 compile les fonctions JavaScript dans un bytecode concis, qui est compris entre 50 % et 25 % de la taille du code machine non optimisé. Ce bytecode est alors exécuté par un interprète de haute performance qui donne des vitesses d'exécution sur les sites Web du monde réel proches de celles du code non optimisé généré par le compilateur existant de V8 ».

Et de continuer en disant que « dans Chrome 53, Ignition sera activé pour les appareils Android qui ont des mémoires RAM limitées (512 Mo ou moins), où les économies de mémoire sont les plus nécessaires. Les résultats des premières expériences dans le domaine montrent qu’Ignition réduit la mémoire de chaque onglet Chrome d'environ 5 % ».


Comme d’autres moteurs, V8 peut se servir d’une compilation à la volée des scripts en code machine pour des besoins de performance. Le code est d'abord établi par un compilateur de base, qui peut générer du code machine non optimisé rapidement. Le code compilé est analysé lors de l'exécution et éventuellement recompilé dynamiquement avec un compilateur d'optimisation plus avancée pour des performances de pointe. Avec V8, le pipeline d’exécution de script a des conditions nécessitant une machinerie complexe pour basculer entre le compilateur de base et deux autres compilateurs d’optimisation : CrankShaft et TurboFan. Avec ce processus, le code machine compilé à la volée peut consommer beaucoup de mémoire même si le code n’était exécuté qu’une seule fois. C’est à ce niveau qu’intervient Ignition, qui va exécuter le code en se servant de moins de mémoire.

Pour plus de précisions, l’interpréteur Ignition se sert des macros d'assembleur de TurboFan, indépendantes des architectures cibles, pour générer des gestionnaires de bytecode pour chaque opcode. TurboFan va alors compiler ces instructions pour l’architecture cible, ce qui va résulter en un code interpréteur grandement optimisé qui peut exécuter les instructions bytecode et interagir avec le reste de la machine virtuelle V8.


Ajouter Ignition au pipeline d'exécution de script ouvre des possibilités qui vont bien au-delà de la réduction de l’utilisation de la mémoire faite par V8. Si le premier point sur lequel se sont focalisés les ingénieurs Google avec Ignition est la réduction de la consommation de la mémoire, concernant le futur d’Ignition, Ross McIlroy affirme que « le pipeline d’Ignition a été conçu pour nous permettre de prendre de meilleures décisions sur le moment d'exécuter et d'optimiser le code pour accélérer le chargement des pages Web, réduire les déchets et rendre plus efficaces les échanges entre les différentes composantes de V8 ».

Source : blog V8

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de atha2
Membre éprouvé https://www.developpez.com
Le 30/08/2016 à 10:07
J'ai du mal voir l’icône affectée à cet article...
Indice : Java <=> JavaScript

Hâte de voir le résultat de ces optimisations sur mon Galaxy S2 (sic)
4  0 
Avatar de melka one
Membre éprouvé https://www.developpez.com
Le 30/08/2016 à 15:00
ce que l'on ne sais pas c'est si cette optimisation de la mémoire ne se fait pas au détriment de l'utilisation CPU
1  0 
Avatar de _FLX_
Membre du Club https://www.developpez.com
Le 31/08/2016 à 6:04
L'icone java si c'est fait exprès c'est bien joué, j'ai un peu craché mon café.
1  0 
Avatar de Songbird
Expert confirmé https://www.developpez.com
Le 30/08/2016 à 8:26
Hâte de recevoir la mise à jour sur mon post !

J'espère que ça sera rapidement disponible sous Linux.
0  0 
Avatar de Songbird
Expert confirmé https://www.developpez.com
Le 30/08/2016 à 10:58
Oui, je l'ai remonté lorsque j'ai lu l'article.
0  0 
Avatar de yahiko
Rédacteur/Modérateur https://www.developpez.com
Le 30/08/2016 à 11:01
C'est une avancée intéressante qui servira à termes à toutes les déclinaisons de Chrome, y comprit à la version desktop, dans la mesure où dans un cadre d'utilisation généraliste, Ignition tout en diminuant la consommation de mémoire, permet de préserver les performances.
0  0 
Avatar de qvignaud
Membre habitué https://www.developpez.com
Le 30/08/2016 à 15:38
Exact, et surtout si l'utilisateur aura le moyen de le paramétrer. Je ne parle pas ici de Chrome/Chromium, mais d'applications JavaScript autonomes, comme avec NodeJS.
Je pense qu'il sera intéressant de comparer les performances d'exécution de ces applications avec et sans ce nouvel interpréteur.
0  0 
Avatar de steel-finger
Membre actif https://www.developpez.com
Le 30/08/2016 à 17:51
C'est plutôt une bonne nouvelle car chrome est très gourmand en mémoire.
0  0