Zum Hauptinhalt springen

38 Posts getaggt mit "Internals"

Alle Tags anzeigen

Turbocharging V8 mit veränderlichen Heap-Zahlen

· 6 Minuten Lesezeit
[Victor Gomes](https://twitter.com/VictorBFG), der Bit-Shifter

Bei V8 streben wir ständig danach, die Leistung von JavaScript zu verbessern. Im Rahmen dieser Bemühungen haben wir kürzlich die JetStream2-Benchmark-Suite geprüft, um Leistungseinbrüche zu beseitigen. Dieser Beitrag beschreibt eine spezifische Optimierung, die eine signifikante Verbesserung von 2.5x im async-fs-Benchmark ergab und zu einem spürbaren Anstieg der Gesamtpunktzahl beitrug. Die Optimierung wurde durch den Benchmark inspiriert, aber solche Muster finden sich auch im echten Code.

Zeiger-Komprimierung in Oilpan

· 14 Minuten Lesezeit
Anton Bikineev und Michael Lippautz ([@mlippautz](https://twitter.com/mlippautz)), gehende Disassembler

Es ist absolut unsinnig, 64-Bit-Zeiger zu verwenden, wenn ich ein Programm kompiliere, das weniger als 4 Gigabyte RAM benötigt. Wenn solche Zeigerwerte in einer Struktur erscheinen, verschwenden sie nicht nur die Hälfte des Speichers, sondern verbrauchen effektiv die Hälfte des Caches.

Donald Knuth (2008)

Nachrüstung zeitlicher Speichersicherheit in C++

· 11 Minuten Lesezeit
Anton Bikineev, Michael Lippautz ([@mlippautz](https://twitter.com/mlippautz)), Hannes Payer ([@PayerHannes](https://twitter.com/PayerHannes))
hinweis

Hinweis: Dieser Beitrag wurde ursprünglich im Google Security Blog veröffentlicht.

Speichersicherheit in Chrome ist eine ständige Bemühung zum Schutz unserer Nutzer. Wir experimentieren ständig mit verschiedenen Technologien, um böswilligen Akteuren einen Schritt voraus zu sein. In diesem Geist handelt dieser Beitrag von unserer Reise der Nutzung von Heap-Scanning-Technologien zur Verbesserung der Speichersicherheit von C++.

Schnellere Initialisierung von Instanzen mit neuen Klassenfeatures

· 12 Minuten Lesezeit
[Joyee Cheung](https://twitter.com/JoyeeCheung), Instanzinitialisierer

Klassenfelder wurden in V8 seit v7.2 eingeführt, und private Klassenmethoden wurden seit v8.4 verfügbar. Nachdem die Vorschläge 2021 die Stufe 4 erreicht hatten, begann die Arbeit an der Verbesserung der Unterstützung für die neuen Klassenfeatures in V8 - bis dahin gab es zwei Hauptprobleme, die ihre Akzeptanz beeinträchtigten:

Oilpan-Bibliothek

· 7 Minuten Lesezeit
Anton Bikineev, Omer Katz ([@omerktz](https://twitter.com/omerktz)) und Michael Lippautz ([@mlippautz](https://twitter.com/mlippautz)), effiziente und effektive Dateibeweger

Während der Titel dieses Beitrags möglicherweise darauf hinweist, tief in eine Sammlung von Büchern über Ölpfannen – ein Thema mit überraschend viel Literatur, wenn man Konstruktionstechniken für Pfannen berücksichtigt – einzutauchen, schauen wir stattdessen genauer auf Oilpan, einen C++ Garbage Collector, der seit V8 v9.4 als Bibliothek über V8 bereitgestellt wird.

Schnellere JavaScript-Aufrufe

· 19 Minuten Lesezeit
[Victor Gomes](https://twitter.com/VictorBFG), der Frame-Zerkleinerer

JavaScript ermöglicht das Aufrufen einer Funktion mit einer anderen Anzahl von Argumenten als der erwarteten Parameteranzahl, d. h., man kann weniger oder mehr Argumente übergeben als die deklarierten formalen Parameter. Der erste Fall wird als Unteranwendung und der zweite als Überanwendung bezeichnet.

Slack-Verfolgung in V8

· 18 Minuten Lesezeit
Michael Stanton ([@alpencoder](https://twitter.com/alpencoder)), renommierter Meister des *Slack*

Slack-Verfolgung ist eine Möglichkeit, neuen Objekten eine anfängliche Größe zu geben, die größer ist, als sie tatsächlich benötigen, damit sie schnell neue Eigenschaften hinzufügen können. Und dann, nach einer gewissen Zeit, diesen ungenutzten Platz magisch an das System zurückzugeben. Cool, oder?

Pointer-Komprimierung in V8

· 21 Minuten Lesezeit
Igor Sheludko und Santiago Aboy Solanes, *die* Pointer-Komprimierer

Es gibt einen ständigen Kampf zwischen Speicher und Leistung. Als Nutzer wünschen wir uns, dass Dinge sowohl schnell sind als auch möglichst wenig Speicher verbrauchen. Leider geht eine Leistungssteigerung gewöhnlich mit einem höheren Speicherverbrauch einher (und umgekehrt).

Verbesserung der regulären Ausdrücke in V8

· 7 Minuten Lesezeit
Patrick Thier und Ana Peško, regelmäßige Meinungsäußerungen über reguläre Ausdrücke

In der Standardkonfiguration kompiliert V8 reguläre Ausdrücke beim ersten Ausführen in nativen Code. Im Rahmen unserer Arbeit an JIT-less V8 haben wir einen Interpreter für reguläre Ausdrücke eingeführt. Das Interpretieren von regulären Ausdrücken hat den Vorteil, weniger Speicher zu verwenden, geht jedoch mit einem Leistungseinbußen einher. In diesem Blog-Beitrag beschreiben wir, wie wir die Vorteile des Interpretierens von regulären Ausdrücken nutzen und die Nachteile mindern.

Ein leichteres V8

· 11 Minuten Lesezeit
Mythri Alle, Dan Elphick und [Ross McIlroy](https://twitter.com/rossmcilroy), V8-Gewichtsüberwacher

Ende 2018 starteten wir ein Projekt namens V8 Lite, das darauf abzielte, den Speicherverbrauch von V8 drastisch zu reduzieren. Ursprünglich war dieses Projekt als separater Lite-Modus von V8 gedacht, der speziell für mobile Geräte mit geringem Speicher oder Embedding-Anwendungsfälle konzipiert wurde, bei denen es mehr auf reduzierten Speicherverbrauch als auf Durchsatzgeschwindigkeit ankommt. Im Verlauf dieser Arbeit stellten wir jedoch fest, dass viele der Speicheroptimierungen, die wir für diesen Lite-Modus vorgenommen hatten, auch auf das reguläre V8 übertragen werden konnten, wodurch alle V8-Benutzer profitieren konnten.