Aller au contenu principal

27 articles tagués avec « internals »

Voir tous les tags

Suralimenter V8 avec des nombres sur le tas mutables

· 7 minutes de lecture
[Victor Gomes](https://twitter.com/VictorBFG), le manipulateur de bits

Chez V8, nous nous efforçons constamment d'améliorer les performances de JavaScript. Dans le cadre de cet effort, nous avons récemment revisité la suite de tests JetStream2 pour éliminer les goulets d'étranglement de performance. Cet article détaille une optimisation spécifique que nous avons réalisée et qui a permis une amélioration significative de 2.5x dans le test async-fs, contribuant ainsi à une augmentation notable du score global. L'optimisation a été inspirée par le test, mais de tels motifs apparaissent également dans le code du monde réel.

Compression des pointeurs dans Oilpan

· 16 minutes de lecture
Anton Bikineev et Michael Lippautz ([@mlippautz](https://twitter.com/mlippautz)), désassembleurs ambulants

Il est absolument idiot d'avoir des pointeurs 64 bits lorsque je compile un programme qui utilise moins de 4 gigaoctets de RAM. Lorsque de telles valeurs de pointeur apparaissent à l'intérieur d'une structure, elles ne font pas seulement perdre la moitié de la mémoire, elles jettent effectivement la moitié du cache.

Donald Knuth (2008)

Réadaptation de la sécurité mémoire temporelle sur C++

· 13 minutes de lecture
Anton Bikineev, Michael Lippautz ([@mlippautz](https://twitter.com/mlippautz)), Hannes Payer ([@PayerHannes](https://twitter.com/PayerHannes))
remarque

Remarque : Cet article a été initialement publié sur le blog de sécurité de Google.

La sécurité mémoire dans Chrome est un effort perpétuel pour protéger nos utilisateurs. Nous expérimentons constamment différentes technologies pour devancer les acteurs malveillants. Dans cet esprit, cet article évoque notre démarche d'utilisation des technologies d'analyse du tas afin d'améliorer la sécurité mémoire de C++.

Appels JavaScript plus rapides

· 20 minutes de lecture
[Victor Gomes](https://twitter.com/VictorBFG), le déchiqueteur de frames

JavaScript permet d'appeler une fonction avec un nombre d'arguments différent de celui attendu par les paramètres formels, c'est-à-dire que l'on peut passer moins ou plus d'arguments que les paramètres déclarés. Le premier cas est appelé sous-application, et le second est appelé sur-application.

Suivi de slack dans V8

· 19 minutes de lecture
Michael Stanton ([@alpencoder](https://twitter.com/alpencoder)), maître renommé du *slack*

Le suivi de slack est un moyen de donner aux nouveaux objets une taille initiale qui est plus grande que ce qu'ils peuvent réellement utiliser, afin qu'ils puissent avoir de nouvelles propriétés ajoutées rapidement. Et ensuite, après un certain temps, de rendre magiquement cet espace inutilisé au système. Sympa, non ?

Améliorer les expressions régulières V8

· 8 minutes de lecture
Patrick Thier et Ana Peško, exprimeurs réguliers d'opinions sur les expressions régulières

Dans sa configuration par défaut, V8 compile les expressions régulières en code natif lors de leur première exécution. Dans le cadre de notre travail sur V8 sans JIT, nous avons introduit un interpréteur pour les expressions régulières. L'interprétation des expressions régulières présente l'avantage d'utiliser moins de mémoire, mais cela entraîne une pénalité en termes de performances. Dans cet article de blog, nous décrivons comment nous tirons parti des avantages de l'interprétation des expressions régulières tout en atténuant ses inconvénients.

L'histoire d'une chute de performance V8 dans React

· 20 minutes de lecture
Benedikt Meurer ([@bmeurer](https://twitter.com/bmeurer)) et Mathias Bynens ([@mathias](https://twitter.com/mathias))

Précédemment, nous avons discuté de la manière dont les moteurs JavaScript optimisent l'accès aux objets et aux tableaux grâce à l'utilisation de Shapes et d'Inline Caches, et nous avons exploré comment les moteurs accélèrent l'accès aux propriétés de prototype en particulier. Cet article décrit comment V8 choisit les représentations en mémoire optimales pour diverses valeurs JavaScript, et comment cela impacte les mécanismes de formes — tout cela aide à expliquer une récente chute de performance V8 dans le cœur de React.

Le coût de JavaScript en 2019

· 16 minutes de lecture
Addy Osmani ([@addyosmani](https://twitter.com/addyosmani)), Concierge JavaScript, et Mathias Bynens ([@mathias](https://twitter.com/mathias)), Libérateur du fil principal
remarque

Remarque: Si vous préférez regarder une présentation plutôt que lire des articles, profitez de la vidéo ci-dessous ! Sinon, passez la vidéo et continuez à lire.

“Le coût de JavaScript” présenté par Addy Osmani à la conférence #PerfMatters 2019.

Mise en cache du code pour les développeurs WebAssembly

· 12 minutes de lecture
[Bill Budge](https://twitter.com/billb), ajoutant le Ca-ching! à la mise en cache

Il y a un dicton parmi les développeurs qui dit que le code le plus rapide est celui qui ne s’exécute pas. De même, le code qui se compile le plus rapidement est celui qui n’a pas besoin d’être compilé. La mise en cache du code WebAssembly est une nouvelle optimisation dans Chrome et V8 qui vise à éviter la compilation du code en mettant en cache le code natif produit par le compilateur. Nous avons écrit sur comment Chrome et V8 mettent en cache le code JavaScript dans le passé, et les meilleures pratiques pour tirer parti de cette optimisation. Dans cet article, nous décrivons le fonctionnement de la mise en cache du code WebAssembly dans Chrome et comment les développeurs peuvent en tirer parti pour accélérer le chargement des applications avec de grands modules WebAssembly.

Parsing ultra-rapide, partie 2 : analyse syntaxique paresseuse

· 17 minutes de lecture
Toon Verwaest ([@tverwaes](https://twitter.com/tverwaes)) et Marja Hölttä ([@marjakh](https://twitter.com/marjakh)), parsers plus légers

Voici la deuxième partie de notre série expliquant comment V8 analyse JavaScript aussi rapidement que possible. La première partie expliquait comment nous avons rendu le scanner de V8 rapide.

L’analyse syntaxique est l’étape où le code source est converti en une représentation intermédiaire qui sera consommée par un compilateur (dans V8, le compilateur de bytecode Ignition). L’analyse et la compilation se déroulent sur le chemin critique du démarrage de la page web, et toutes les fonctions envoyées au navigateur ne sont pas immédiatement nécessaires lors du démarrage. Même si les développeurs peuvent différer ce code avec des scripts asynchrones et différés, cela n’est pas toujours possible. De plus, de nombreuses pages web incluent du code utilisé uniquement par certaines fonctionnalités qui peuvent ne pas être accessibles du tout par un utilisateur au cours de l’exécution individuelle de la page.