Fullmoon System

Fullmoon Core Engine: Konzept zur Build- und Renderingoptimierung

Ein Konzept zur Web-Performance, das Bundle-Optimierung beim Build von der Aufgabenverteilung zur Laufzeit im Browser unterscheidet und beide getrennt misst.

1. Build-Zeit und Laufzeit unterscheiden

Dieses Dokument beschreibt ein Konzept zur Optimierung von Web-Builds und Rendering. Der Einsatz von Rust oder WebAssembly macht nicht automatisch die gesamte Anwendung schneller. Engpässe müssen zunächst durch Bundle-Analyse und Browser-Profiling ermittelt werden.

Beim Build werden Modulaufteilung, Entfernung ungenutzten Codes und Asset-Optimierung betrachtet. Im Browser werden Netzwerkanfragen, JavaScript-Parsing und -Ausführung, Layout und Paint getrennt gemessen. Die Größe heruntergeladenen JavaScripts und die Zeit bis zur ersten Serverantwort sind unterschiedliche Kennzahlen.

2. Grenzen von WebAssembly und Workern

CPU-intensive Berechnungen können für WebAssembly geeignet sein. Initialisierung und Übergänge zwischen JavaScript und WebAssembly verursachen jedoch ebenfalls Kosten, die gemessen werden müssen. Ein Worker kann das DOM weder direkt durchlaufen noch verändern. Der Hauptthread extrahiert benötigte Daten, übergibt sie und aktualisiert nach Erhalt des Ergebnisses die Oberfläche. Maßgeblich ist die Dokumentation zu Web Workern.

  • Die Verwendung eines Workers bedeutet nicht, dass eine einzelne WebAssembly-Instanz automatisch in mehreren Threads ausgeführt wird.
  • Kosten für Nachrichtenserialisierung und Datenkopien werden gemessen; bei Bedarf werden übertragbare Objekte geprüft.
  • Abbruch und Zeitlimits werden implementiert. Die Grundfunktionen der Seite bleiben auch bei einem Worker-Fehler verfügbar.

3. Reproduzierbare Leistungsvergleiche

Messungen erfolgen mehrfach auf demselben Gerät und unter gleichen Netzwerkbedingungen, getrennt nach kaltem und warmem Cache. Build-Zeit, Übertragungsgröße, LCP, INP und CLS werden einzeln erfasst; eine einzelne Zahl beschreibt nicht die gesamte Leistung.

Ohne gesonderte Benchmarkdaten werden weder Beschleunigungsfaktoren und Millisekundenwerte noch ein bedingungsloses Rendering in weniger als einer Sekunde als nachgewiesene Ergebnisse ausgewiesen.