WebAssembly erhält experimentellen Support in Microsoft Edge

Microsoft Edge mit besserer JavaScript-Performance und WebAssembly-Support
Kommentare

Mit dem Windows 10 Creators Update gab es auch einige Neuerungen in puncto JavaScript-Performance für Microsoft Edge. Außerdem unterstützt Edge ab sofort auch WebAssembly.

Seit Anfang April steht das Creators Update für Windows 10 offiziell zur Verfügung. Im Gepäck hat das aktuelle Update für das Microsoft-Betriebssystem neben Paint 3D auch viele weitere Neuerungen – darunter auch einige Verbesserungen für den neuen Microsoft-Browser Microsoft Edge. Dabei wurden vor allem an der JavaScript-Engine Chakra einige Änderungen vorgenommen, die für eine bessere JavaScript-Performance des Microsoft-Browsers sorgen sollen. Außerdem erhalt Microsoft Edge experimentellen Support für WebAssembly und Shared Memory and Atomics.

Bessere JavaScript-Performance in Microsoft Edge

Mit dem Windows 10 Creators Update wurden auch der JavaScript-Engine Chakra einige neue Features spendiert, die die tägliche Browsing-Experience der Nutzer von Microsoft Edge verbessern sollen.

So wurde bereits zu Zeiten des Internet Explorers die Möglichkeit des defer-parsens von Funktionen in Chakra eingeführt. Die Engine prüft dabei infrage kommende Funktionen auf Sytax-Fehler beim Startup und verzögert das vollständige Parsen bis die Funktion das erste Mal tatsächlich aufgerufen wird. Damit soll vor allem die Seitenladezeit deutlich beschleunigt werden. Zudem wird so verhindert, dass Memory unnötigerweise zum Speichern von Metadaten wie ASTs oder Bytecode für redundante Funktionen genutzt wird.

Mit dem Creators Update wird die Funktionalität des defer-parsings erweitert und der Speicherverbrauch dank des sogenannten re-deferrings verbessert. Dazu sagt der Chakra-Program-Manager Limin Zhu im Microsoft-Edge-Blog:

The idea of re-deferring is deceptively simple – for every function that Chakra deems would no longer get executed, the engine frees the bulk of the memory the function holds to store metadata generated after pre-parsing, and effectively leaves the function in a deferred state as if it has just been pre-parsed.

Wie genau das funktioniert, veranschaulicht auch das folgende Bild:

Re-Deferring in Microsoft Edge

Re-Deferring in Microsoft Edge, Quelle: Microsoft

Der Vorteil des re-deferrings liegt dabei auf der Hand: Je nach ausgegebenem Content kann re-deferring den von Chakra bereitgestellten Speicher um sechs bis zwölf Prozent reduzieren.

Weitere Optimierungen

Chakra JIT optimierte bereits vor dem Creators Update das Erstellen von Heap-Argumenten, wenn Funktionen keine formellen Parameter haben. Ab sofort wird diese JIT-Optimierung erweitert, um auch das Erstellen von Heap-Argumenten mit vorhandenen Formals zu vermeiden.

Ebenso gab es einige Neuerungen in puncto Performance von minified Code. So wurden bereits in früheren Updates der Chakra-Engine Optimierungen von Code-Pattern, die in UglifyJS genutzt werden, vorgenommen. Mit dem Creators Update wurden nun das Emit-Pattern des Closure-Compilers untersucht und eine Reihe von Inlining-Heuristics, Fast Paths und weiterer Optimierungen implementiert. Damit soll von Closer minified Code deutlich schneller verarbeitet werden. Benchmarks zeigen hierbei etwa eine Performance-Verbesserung von fünf bis 15 Prozent, heißt es im zugehörigen Blogpst.

API Summit 2017

Web APIs mit moderner Web-Technologie konsumieren

mit Rainer Stropek (software architects)

API First mit Swagger & Co.

mit Thilo Frotscher (Freiberufler)

Experimenteller Support für WebAssembly und ES-17-Features

WebAssembly – ein neues Binärformat für das Web – soll Performance-kritischen Workloads wie Games oder das Ver- und Entschlüsseln von Multimedia-Daten zu einer fast nativen Performance verhelfen. Microsoft hat bei der Entwicklung von WebAssembly eng mit Browser-Herstellern wie Mozilla und Google sowie weiteren Partnern in der WebAssembly Community Group zusammengearbeitet.

Während WebAssembly bereits seit einiger Zeit im Firefox und Chrome implementiert ist, bietet ab sofort auch Microsoft Edge experimentellen Support für WebAssembly. Insbesondere die Startzeit von umfangreichen Webapps profitiere dabei von der Integration des neuen Binärformats in den Microsoft-Browser, heißt es im Microsoft-Edge-Blog.

Außerdem unterstützt Microsoft Edge mit Shared Memory and Atomics auch eines der neuen ECMAScript-2017-Features. Dies soll etwa das Parallel Programming im Web weiter verbessern und erleichtern. Auch dieses Feature steht ab sofort hinter dem experimentellen JavaScript-Features-Flag in Edge zur Verfügung.

Natürlich bleiben diese Änderungen nicht die einzigen Verbesserungen in Sachen JavaScript-Performance in Microsoft Edge. Auch in Zukunft will Microsoft seinen Browser und die dazugehörige JavaScript-Engine Chakra weiter verbessern – Feedback und Anregungen nimmt das Chakra-Team darum jederzeit über Twitter oder GitHub entgegen.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -