25 Punkte von xguru 2024-06-28 | 2 Kommentare | Auf WhatsApp teilen
  • Das Google-Sheets-Team arbeitet seit der Ankündigung der Nutzung von WasmGC in Chrome im Jahr 2022 eng damit zusammen
  • Damit wurde ein Präzedenzfall geschaffen, damit Googles Apps auf WasmGC laufen können
  • Problem: JavaScript
    • Die Berechnungs-Engine von Google Sheets wurde ursprünglich in Java geschrieben und 2006 veröffentlicht, wobei alle Berechnungen auf dem Server stattfanden
    • Seit 2013 läuft sie mit JavaScript im Browser
      • Zunächst mit dem Google Web Toolkit (GWT), später mit dem Java-to-Closure-JavaScript-Transpiler (J2CL)
    • Die JavaScript-Berechnungs-Engine läuft in einem Web Worker und kommuniziert über MessageChannel mit dem Main Thread
    • Die JavaScript-Version ist mehr als dreimal langsamer als die Java-Version
  • Warum JavaScript langsamer ist als Java
    • JavaScript ist eine dynamische Sprache, deren Performance durch JIT-Compiler verbessert wurde, aber sie hat weiterhin Einschränkungen
    • Lockere Typisierung und dynamisches Verhalten erschweren die Generierung optimalen Codes
    • TypeScript erleichtert zwar die Entwicklung, liefert aber nicht die für Optimierungen nötigen Garantien
  • Lösung: WasmGC
    • Eine Erweiterung von WebAssembly, die die für die Kompilierung von Garbage-Collection-Sprachen nötigen Funktionen ergänzt
    • Ermöglicht es, Sprachen wie Java im Web mit nahezu nativer Geschwindigkeit auszuführen
    • Voraussichtlich mit größerer Wirkung als Wasm für C++
  • Zusammenarbeit zwischen Google Workspace und Chrome
    • Ende 2020 begann die Zusammenarbeit zur Evaluierung von WasmGC
    • Die Berechnungs-Engine von Sheets wurde als ideales Testziel ausgewählt
    • Das V8-Team und Mitwirkende an Binaryen (WASM-Optimierungs-Toolchain) übernahmen die WasmGC-Runtime und AOT-Optimierungen
  • Optimierungsprozess
    • Die erste Version war doppelt so langsam wie JavaScript, wurde aber kontinuierlich optimiert
    • Zentrale Optimierungstechniken aus JVM und V8 wurden nachgebildet (allein durch Virtual-Method-Dispatch, Speculative Inlining und Devirtualization wurde die Geschwindigkeit um 40 % gesteigert)
    • Nutzung hochoptimierter Browser-APIs (z. B. 100-fache Verbesserung bei der Verarbeitung regulärer Ausdrücke)
    • Entfernung von auf JavaScript zugeschnittenen Coding-Patterns
  • Fazit
    • WasmGC ist eine Technologie mit dem Potenzial, die Entwicklung von Webanwendungen weiterzuentwickeln
    • Künftig werden Unterstützung für Shared-Memory-Multithreading und bessere Single-Thread-Performance bei WasmGC erwartet
    • Allen Webentwicklern wird empfohlen, WasmGC für High-Performance-Projekte zu nutzen

2 Kommentare

 
ragingwind 2024-06-28

Ein bemerkenswerter Fall.

 
xguru 2024-06-28

Letztlich wird hier nicht darauf eingegangen, wie viel schneller es durch die Portierung von JavaScript zu WasmGC geworden ist, aber im unten verlinkten Beitrag steht, dass es doppelt so schnell wurde.
Doubling calculation speed and other new innovations in Google Sheets

Siehe auch: WebAssembly Garbage Collection (WasmGC) ist jetzt in Chrome standardmäßig aktiviert