Chrome : Ignition doit réduire la consommation de mémoire vive autour de JavaScript
Bon, de 5 % dans un premier temps
Le 30 août 2016 à 10h10
3 min
Logiciel
Logiciel
Durant la conférence BlinkOn, Google a présenté un nouvel interpréteur JavaScript pour Chrome. Baptisé Ignition, il aura dans un premier temps la mission de réduire la consommation de mémoire vive, particulièrement sur les appareils mobiles.
Le JavaScript, comme tout langage de script, est interprété ou compilé. Contrairement à un exécutable binaire qui peut être exécuté directement, il doit d’abord être traduit en langage machine. C’est le travail du compilateur JavaScript à la volée (just-in-time), qui permet de générer de l’assembleur avant de l’envoyer pour traitement au processeur.
Dans la machine virtuelle JavaScript V8 de Chrome, ce compilateur est basique : il doit avant tout générer un code machine aussi rapidement que possible. Cette phase, dont la durée doit être minimale, a l’inconvénient de pouvoir consommer une grande quantité de mémoire vive, même quand le code n’est exécuté qu’une fois. Ledit code circule en fait dans un pipeline d’exécution, qui permet en fonction de ce qui y est détecté de passer le relai à deux autres compilateurs, optimisés ceux-là : Crankshaft et TurboFan.
Ignition simplifie le pipeline d'exécution
Arrive Ignition. Il s’agit d’un nouvel interpréteur de JavaScript, qui peut se substituer au compilateur de base en début de pipeline de V8. L’intérêt d’Ignition est double selon Google : simplifier la chaine d’exécution et procéder à une compilation moins gourmande en mémoire vive. Pour ce faire, Ignition applique une recette connue : le script compilé est transformé en bytecode, un code « prémaché » dont le poids ne représente plus que la moitié, voire le quart de celui d’un code compilé basique.
Le bytecode passe ensuite à la moulinette d’un autre interpréteur, conçu pour cette opération. Le résultat dispose des optimisations spécifiques à la plateforme matérielle détectée. Google n’a pas réinventé la roue : l’éditeur a tout simplement réutilisé les instructions macro-assembleur de TurboFan pour concevoir Ignition. Il fournit donc au compilateur final un code équipé de tous les « marqueurs » nécessaires pour une architecture donnée.
Uniquement pour Android sur de petits appareils pour l'instant
Ignition devra cependant attendre pour révéler son plein potentiel. Il ne sera actif dans un premier temps que dans la version Android de Chrome, et uniquement pour des appareils qui disposent de 512 Mo de mémoire vive ou moins. D’après les tests réalisés par Google, la consommation en mémoire diminue d’environ 5 % sur chaque onglet.
Ross McIlroy, qui en gère le développement, indique cependant qu’Ignition offre d’autres possibilités, notamment de pouvoir « prendre de meilleures décisions » sur le bon moment pour exécuter et optimiser le code, grâce à la simplification du pipeline. Ceux qui souhaitent en savoir davantage sur Ignition pourront lire la présentation réalisée par Google.
Chrome : Ignition doit réduire la consommation de mémoire vive autour de JavaScript
-
Ignition simplifie le pipeline d'exécution
-
Uniquement pour Android sur de petits appareils pour l'instant
Commentaires (71)
Vous devez être abonné pour pouvoir commenter.
Déjà abonné ? Se connecter
Abonnez-vousLe 30/08/2016 à 10h14
J’ai rien compris, mais ça a l’air vachement chiadé " />
Le 31/08/2016 à 06h54
Le 31/08/2016 à 07h03
Le 31/08/2016 à 07h48
Ou alors, peut-être, existe-t-il des gens qui constatent que le modèle objet de JavaScript - où chaque objet n’est qu’une collection de propriétés nommées - est bien adapté syntaxiquement à la représentation compacte d’un élément du DOM dans une expression (vu que c’est à ça qu’il était destiné), mais à-peu-près rien d’autre ?
Ou alors qu’il existe des gens qui s’émeuvent que ce langage, hégémonique dans les browsers car bien adapté à la manipulation du DOM, est poussé dans des applications où il est largement sorti de son domaine de compétences pour l’unique raison que “comme ça vous pouvez utiliser le langage que vous connaissez déjà” ?
Le 31/08/2016 à 07h49
Ah ouai quand même !
Chez moi c’est pas le premier : aucun processus chrome ne prend plus de 100mo de mémoire (j’ai 8 onglets d’ouvert, dont gmail).
Au dessus j’ai sql développeur, firefox (2 onglets dont une boite mail) et en tête de liste j’ai mon zend-eclipse à 400mo ! (13 projets, 4 fichiers ouverts).
Le 31/08/2016 à 07h55
Le 31/08/2016 à 08h24
Natürlisch! ;)
Le 31/08/2016 à 08h35
Bah là c’était surtout pour comparer la conso de gmail, mais c’est vrai que même sur une seule page il y a plein d’autre choses qui peuvent influencer (plugins, os, version de chrome etc).
Le 31/08/2016 à 09h10
2 mots: left-pad :p (bon ok non seulement c’est du troll mais en plus c’est en NodeJS)
Sinon le problème vient en partie je pense de l’héritage que le langage doit supporter et qui peu paraître pas super propre (api de base bordélique dans certains cas, le fait de pas avoir les types de base classique genre Number etc etc).
Dans tous les cas j’attends les WebAssembly avec impatience " /> (ouai je sais, je peux toujours attendre)
Le 31/08/2016 à 12h21
Oui, mais Babel le supporte déjà dans une certaine mesure. Et vu que Babel est quasi obligatoire pour la compatibilité et les polyfills d’IE, autant y aller à fond et utiliser ES7.
Le 31/08/2016 à 12h22
J’ai commencé les hostilités et je m’en excuse. C’était juste à titre indicatif.
Et soit dit en passsant, pour Chrome, c’est pas évident de calculer son utilisation mémoire réelle à cause des process séparés et de la mémoire partagée.
Le 31/08/2016 à 12h29
Le 31/08/2016 à 15h02
Le 31/08/2016 à 16h56
Ca doit dependre de ta formation.
Je trouve le couple HTML + CSS tres simple à utiliser.
Et honnêtement, faire du style en JS, c’est à vomir… du moins pour le peu que j’ai essayé avec react + jsx.
Le 31/08/2016 à 20h08
Le 31/08/2016 à 20h16
Le 31/08/2016 à 20h28
Le 30/08/2016 à 11h43
J’aime ton idée
Le 30/08/2016 à 11h51
Le 30/08/2016 à 12h06
«Java is to JavaScript as car is to carpet»
Le 30/08/2016 à 12h22
Y a pas de quoi mettre le feu aux poudres.
–> [] " />
Le 30/08/2016 à 12h25
So 2015. On en est à ecmascript 7 depuis juin. " />
Le 30/08/2016 à 12h29
Firefox fait largement mieux et se bonifie avec le temps en conso mémoire, malgré le bad buzz qui lui colle à la peau. Ici, 26 onglets, 433 Mo en x86.
[edit:]En chargeant pour de vrai les 26 onglets, c’est 802 Mo, ce qui reste honorable.
Le 30/08/2016 à 12h33
ouais du xml et du xsl quoi
Le 30/08/2016 à 12h43
Le 30/08/2016 à 12h43
Moi j’aimerais bien du QML (Qt Quick) plutôt que le html.
Le 30/08/2016 à 12h45
t’as vu les 5 trolls ? " />
Le 30/08/2016 à 12h57
Le 30/08/2016 à 12h58
Bond, de 5% ….. c’est bon aussi ?
Le 30/08/2016 à 13h22
Le 30/08/2016 à 13h29
Chrome sur un phone avec 512mo il y a du boulot…
T’ouvre n’importe quel site ça balance un low memory" />
Le 30/08/2016 à 13h36
Le 30/08/2016 à 13h40
Le 30/08/2016 à 13h47
Le 30/08/2016 à 13h51
Le 30/08/2016 à 13h59
Le 30/08/2016 à 14h07
Le 30/08/2016 à 14h23
Le 30/08/2016 à 14h34
Le 30/08/2016 à 14h34
Tu confond beauté et ergonomie.
Oui il y a 10 ans les pages n’étaient pas tellement moins belles (enfin c’est très relatif). Une image peut être belle, ce n’est pas la question.
Aujourd’hui tu peux interagir avec la plupart des éléments d’une page, sans avoir un rafraîchissement.
Et comme tu le dis, la définition d’écran a été multiplié par 4, et le poids des images à plus ou moins suivit.
Il y a 10 ans, il n’y avait aucun plugin, aujourd’hui la plupart des visiteurs ont au moins 3 plugin accroché au navigateur, souvent plus.
Il y a 10 ans il n’y avait pas ou peu de trackers, aujourd’hui rare sont les sites qui en ont moins de 5.
Il y a 10 ans, la sécurité des navigateurs était nulle, aujourd’hui il y a des tas de mécanismes de sécurité, qui prennent forcément de la ram.
Il y a 10 ans, les navigateurs ne savaient lire que des pages web. Aujourd’hui ils sont capable d’ouvrir de nombreux types de documents.
Aujourd’hui les sites internet ont des interfaces aussi riche voir plus riche que la plupart des logiciels d’il y a 10 ans.
Pour ce que tu dis sur le fait de décharger les serveurs vers les clients, c’est un peu vrai. Mais ce que tu perds en ram, tu le gagnes en fluidité, car faire des aller-retours entre le client et le serveur rend l’expérience de navigation très désagréable.
Plusieurs sites proposent des versions sans javascripts (gmail par exemple), mais c’est très désagréable à utiliser. A coté de ça, le prix de la mémoire vive a beaucoup baissé. Donc je ne vois pas pour qu’elle raison il faudrait revenir à l’internet d’il y a 10 ans.
Le 30/08/2016 à 14h43
Le 30/08/2016 à 15h53
Le 30/08/2016 à 17h57
Bah… ouai " />
La version allégée peut avoir de l’intérêt sur un vieille ordinateur, mais elle enlève des fonctionnalités sympa je trouve. Et puis j’ai pas l’impression que la version complète est si lourde que ça, mais bon les ordinateurs que j’utilise ont tous 4go ou plus.
Le 30/08/2016 à 18h09
Le 30/08/2016 à 20h36
Faut qu’on m’explique cette haine courante pour le JS, avant c’était PHP qui prenait le plus cher, il est en passe d’être détrôné " />
Le 30/08/2016 à 21h11
Bah si le navigateur fait le job et que j’ai plus à optimiser chaque bout de code ou d’image je m’en porterai pas plus mal /troll
Le 30/08/2016 à 22h46
Le 6 n’est même pas encore entierement supporté par tous les navigateurs. On a de quoi voir venir pour le 7…
Le 31/08/2016 à 05h23
Le 31/08/2016 à 05h25
Pour moi, l’onglet Gmail est le processus n°1 en consommation mémoire, devant éclipse.
150 Mo rien que pour lui en début de journée !
Le 30/08/2016 à 10h21
5% par onglet ! Wahou ! " />
Pas mal du tout. " />
Le 30/08/2016 à 10h36
Quid de la conso CPU?
Le 30/08/2016 à 10h49
Le 30/08/2016 à 10h49
En attente de la disparition de Javascript.
Le 30/08/2016 à 10h53
C’est bien, tu m’as fait rire. Maintenant réveil toi néo.
Le 30/08/2016 à 10h55
Y a pas qu’avec JS que la consommation de mémoire vive doit être réduite… Chrome est un aspirateur à mémoire vive. Ceci dit en passant, Firefox fait pas mieux.
Le 30/08/2016 à 10h56
var me = “lol”;
Le JavaScript à un avenir radieux.
Le 30/08/2016 à 10h58
On est pas dans la m…e " />
Le 30/08/2016 à 11h11
La plupart des pages web n’ont pas besoin réellement de Javascript. Je pense qu’il manque quelque chose pour pouvoir dynamiser sans Javascript, par exemple définir une zone comme étant un flux, et qui est mis à jour automatiquement, pour remplacer une partie d’ajax. J’aimerais vraiment voir le Javascript réduit à un bac à sable/plugin. Mais disons que je suis fanatique, avec NoScript.
Et le HTML/CSS pourraît être remplacé par des formes de contenu standardisées (mais qui définirait ces standards ?) - on pourrait plus facilement suivre localement notre thème GTK+/Qt/autre sans utiliser des extensions qui forcent plus ou moins un thème en CSS (faire du cas par cas est impossible). Aujourd’hui le web blanc/clair fait mal aux yeux, au sens propre.
En fait, il faudrait repenser un nouveau format de données, qui sépare design et contenu. Je vois tout de suite des gens m’entendre dire qu’il faut retourner à la préhistoire, mais évidemment que je ne veux pas que le web se referme. J’ai pas de prototype à montrer, et je vois un problème entre liberté et standardisation dans mon idée pour l’instant.
Le 30/08/2016 à 11h24
C’est pas si mal que ça l’ecmascript 6
Le 30/08/2016 à 11h29
Le 30/08/2016 à 11h30
Séparé design et contenu, comme du CSS et du HTML “grosso modo”.
Du web avec GTK+/Qt/autre truc bien lourd, c’est pas non plus l’idée du siècle.
Le web d’aujourd’hui leger et sans interface lourde me plait plus que la tres grande majorité des applications pleine de chrome souvent dégueulasse car faite par des gens qui n’ont aucune reflexion sur les interfaces pratique et jolies (c’est possible, il suffit de voir ce qui se fait sur OSX).
Le 30/08/2016 à 11h33
Il est vrai… NodeJS est un “client léger” et ça consommation de ram est 10x inférieur à chromium.
Le 30/08/2016 à 11h36
Oracle devrait porter plainte contre Google pour plagia de la JVM " />
Le 30/08/2016 à 11h40
Le 30/08/2016 à 11h42
mince je pourait pas utiliser sur mon thl 4000 " />
Le 31/08/2016 à 21h03
Le 01/09/2016 à 11h41
Le 01/09/2016 à 11h53
Le 01/09/2016 à 14h39
Le 01/09/2016 à 19h33
Quand je parlais de design, je pensais à la forme du contenu, et non pas son style. Le style lui pourrait provenir du système. GTK+/autre n’est pas “lourd”, c’est simplement déjà présent dans le système. Je pense plus à quelque chose indépendant et compatible.
Le 02/09/2016 à 14h00
Je me vois difficilement faire confiance à un navigateur dire la vérité sur une caractéristique qui définit selon moi sa performance. L’OS ne ment pas.