Zum Hauptinhalt springen

Verbesserte Code-Caching

· 5 Minuten Lesezeit
Mythri Alle, Haupt-Code-Cacher

V8 verwendet Code-Caching, um den generierten Code für häufig verwendete Skripte zu speichern. Ab Chrome 66 speichern wir mehr Code, indem wir den Cache nach der Top-Level-Ausführung generieren. Dies führt zu einer Reduktion der Parsing- und Kompilierungszeit um 20–40 % während des ersten Ladevorgangs.

V8-Version v6.6

· 7 Minuten Lesezeit
das V8-Team

Alle sechs Wochen erstellen wir im Rahmen unseres Veröffentlichungsprozesses einen neuen Branch von V8. Jede Version wird direkt vor einem Chrome-Beta-Meilenstein aus dem V8-Git-Master separiert. Heute freuen wir uns, unseren neuesten Branch anzukündigen, V8-Version 6.6, der sich bis zur Veröffentlichung in Zusammenarbeit mit Chrome 66 Stable in einigen Wochen in der Beta-Phase befindet. V8 v6.6 bietet Entwicklern allerlei Neuerungen. Dieser Beitrag gibt einen Vorgeschmack auf einige Highlights vor der Veröffentlichung.

Hintergrundkompilierung

· 5 Minuten Lesezeit
[Ross McIlroy](https://twitter.com/rossmcilroy), Verteidiger des Hauptthreads

TL;DR: Ab Chrome 66 kompiliert V8 JavaScript-Quellcode in einem Hintergrundthread, wodurch die Zeit, die auf dem Hauptthread für die Kompilierung verbracht wird, auf typischen Websites zwischen 5% und 20% reduziert wird.

Hintergrund

Seit Version 41 unterstützt Chrome das Parsen von JavaScript-Quelldateien in einem Hintergrundthread über die V8-API StreamedSource. Dadurch kann V8 mit dem Parsen von JavaScript-Quellcode beginnen, sobald Chrome das erste Datenstück der Datei aus dem Netzwerk heruntergeladen hat, und parallel weiter parsen, während Chrome die Datei über das Netzwerk streamt. Dies kann erhebliche Ladezeitverbesserungen bieten, da V8 fast mit dem Parsen des JavaScripts fertig sein kann, wenn der Download der Datei abgeschlossen ist.

Von JS zum DOM und zurück verfolgen

· 5 Minuten Lesezeit
Ulan Degenbaev, Alexei Filippov, Michael Lippautz und Hannes Payer — die Gemeinschaft des DOM

Das Debuggen von Speicherlecks in Chrome 66 ist jetzt deutlich einfacher geworden. Die Chrome DevTools können jetzt C++ DOM-Objekte verfolgen und schnappschussartig erfassen sowie alle erreichbaren DOM-Objekte von JavaScript mit ihren Referenzen anzeigen. Diese Funktion ist einer der Vorteile des neuen C++-Tracing-Mechanismus des V8-Garbage-Collectors.

Lazy-Deserialisierung

· 7 Minuten Lesezeit
Jakob Gruber ([@schuay](https://twitter.com/schuay))

TL;DR: Die Lazy-Deserialisierung wurde kürzlich standardmäßig in V8 v6.4 aktiviert und reduziert den Speicherverbrauch von V8 durchschnittlich um über 500 KB pro Browser-Tab. Lesen Sie weiter, um mehr zu erfahren!

Einführung in V8-Snapshots

Doch zunächst wollen wir einen Schritt zurücktreten und uns ansehen, wie V8 Heap-Snapshots verwendet, um die Erstellung neuer Isolates (die grob einem Browser-Tab in Chrome entsprechen) zu beschleunigen. Mein Kollege Yang Guo gab eine gute Einführung dazu in seinem Artikel über benutzerdefinierte Start-Snapshots:

V8-Version v6.5

· 4 Minuten Lesezeit
das V8-Team

Alle sechs Wochen erstellen wir im Rahmen unseres Veröffentlichungsprozesses einen neuen Branch von V8. Jede Version wird direkt vor einem Chrome-Beta-Meilenstein aus dem Git-Master von V8 herausgelöst. Heute freuen wir uns, unseren neuesten Branch, V8-Version 6.5, anzukündigen, der sich bis zur Veröffentlichung im Einklang mit Chrome 65 Stable in mehreren Wochen in der Beta-Phase befindet. V8 v6.5 ist vollgepackt mit allerlei Entwickler-Extras. Dieser Beitrag bietet eine Vorschau auf einige der Highlights als Vorgeschmack auf die Veröffentlichung.

Chrome begrüßt Speedometer 2.0!

· 3 Minuten Lesezeit
die Blink- und V8-Teams

Seit der ersten Veröffentlichung von Speedometer 1.0 im Jahr 2014 verwenden die Blink- und V8-Teams den Benchmark als Proxy für die reale Nutzung von beliebten JavaScript-Frameworks, und wir haben auf diesem Benchmark erhebliche Geschwindigkeitssteigerungen erzielt. Wir haben unabhängig überprüft, dass diese Verbesserungen reale Benutzerergebnisse liefern, indem wir sie an echten Websites gemessen haben und festgestellt haben, dass Verbesserungen der Ladezeiten beliebter Websites auch die Speedometer-Wertung verbessern.

V8-Version v6.4

· 4 Minuten Lesezeit
das V8-Team

Alle sechs Wochen erstellen wir einen neuen Zweig von V8 im Rahmen unseres Veröffentlichungsprozesses. Jede Version wird direkt vor einem Chrome-Beta-Meilenstein von V8s Git Master abgezweigt. Heute freuen wir uns, unseren neuesten Zweig, V8-Version 6.4, bekannt zu geben, der sich bis zur Veröffentlichung in Zusammenarbeit mit Chrome 64 Stable in mehreren Wochen in der Beta-Phase befindet. V8 v6.4 ist voller Entwicklerfreundlicher Verbesserungen. In diesem Beitrag geben wir einen Überblick über einige Highlights, die auf die Veröffentlichung vorbereiten.

JavaScript-Codeabdeckung

· 9 Minuten Lesezeit
Jakob Gruber ([@schuay](https://twitter.com/schuay))

Codeabdeckung liefert Informationen darüber, ob und optional wie oft bestimmte Teile einer Anwendung ausgeführt wurden. Sie wird häufig verwendet, um festzustellen, wie gründlich eine Testsuite eine bestimmte Codebasis prüft.

Warum ist das nützlich?

Als JavaScript-Entwickler finden Sie sich möglicherweise oft in einer Situation wieder, in der die Codeabdeckung nützlich sein könnte. Zum Beispiel:

  • Interessiert an der Qualität Ihrer Testsuite? Ein großes Legacy-Projekt umgestalten? Die Codeabdeckung kann Ihnen genau zeigen, welche Teile Ihrer Codebasis abgedeckt sind.
  • Möchten Sie schnell wissen, ob ein bestimmter Teil der Codebasis erreicht wurde? Anstatt mit console.log für printf-ähnliches Debugging oder durch manuelles Durchlaufen des Codes zu instrumentieren, kann die Codeabdeckung Live-Informationen darüber anzeigen, welche Teile Ihrer Anwendungen ausgeführt wurden.
  • Oder optimieren Sie vielleicht auf Geschwindigkeit und möchten wissen, auf welche Bereiche Sie sich konzentrieren sollten? Ausführungszähldaten können heiße Funktionen und Schleifen aufzeigen.