Abo
  • IT-Karriere:

Mozilla: Firefox beschleunigt Webassembly-Aufrufe über Javascript

Laut einem Mozilla-Entwickler funktionieren Webassembly-Aufrufe über Javascript-Code im Firefox mittlerweile deutlich zügiger. Dafür hat das Team unter anderem die C++-Zwischenschicht entfernt und zugleich den Speicherbedarf optimiert.

Artikel veröffentlicht am , Kristian Kißling/Linux Magazin/
Für Webassembly müssen die Browserhersteller viele Optimierungen vornehmen.
Für Webassembly müssen die Browserhersteller viele Optimierungen vornehmen. (Bild: Webassembly)

Für eine längere Zeit, schreibt der Mozilla-Entwickler Benjamin Bouvier in seinem Blogpost, waren Webassembly-Aufrufe mit Javascript überhaupt nicht optimiert und brauchten daher recht viel Zeit. Das lag demnach vor allem an diversen Umwegen im Code, die Bouvier gemeinsam mit seinem Team nun bearbeitet hat, was die Ausführung von Webassembly (Wasm) deutlich beschleunigen sollte.

Stellenmarkt
  1. über Dr. Maier & Partner GmbH Executive Search, Region Stuttgart
  2. Baettr Stade GmbH über Jauss HR-Consulting GmbH & Co.KG, Stade

Bisher nutzten Wasm-Aufrufe aus Javascript heraus zunächst einen Umweg über C++, um dann einen in Assembler geschriebenen Interpreter-Entry-Stub aufzurufen. Dieser Gluecode wiederum kopierte die C++-Argumente an jene Stellen, an denen Wasm-Funktionen sie erwarteten, setzte einen Maschinenstatus, rief die Funktion auf, übernahm dann auch die Fehlerbehandlung und kehrte unter Umständen zum C++-Aufruf zurück.

  • Die bisherige Variante nutzte C++ ... (Bild: Ashley Williams)
  • ... die neue Variante kommt ohne aus. (Bild: Ashley Williams)
Die bisherige Variante nutzte C++ ... (Bild: Ashley Williams)

Laut Blogpost entpuppte sich die Just-in-Time-Kompilierung dabei als zeitkritischer Teil. Der JIT-Compiler Ionmonkey verwandelte den Code erst in Bytecode. Rief eine derart verwandelte Javascript-Funktion dann WASM-Code auf, führte der Weg des Aufrufs zunächst wieder über C++, bevor er schließlich Webassembly erreichte.

C++ fällt weg

Dieser Umweg über C++ entfällt seit der Anfang Mai veröffentlichten Firefox-Version 60. Der JIT-Compiler macht seitdem keinen Unterschied mehr, ob er eine Javascript- oder eine Webassembly-Funktion aufruft. Für beide kommen dieselben Aufrufoptimierungen zum Einsatz.

Verantwortlich dafür ist unter anderem ein neuer Gluecode, der JIT-Entry-Stub. Dieser wird für jede exportierte Funktion erzeugt, konvertiert und entpackt die von der Javascript-Aufrufmethode gelesenen Argumente in die passenden primitiven WASM-Typen, setzt einige Maschinenregister, ruft die angepeilte WASM-Funktion auf und konvertiert das Ergebnis in ein Format, das auch der Javascript-Aufrufer versteht.

Weil so der Umweg über C++ entfällt, gelingen die Aufrufe nun deutlich schneller, wie auch einige Messungen zeigen, die Bouvier in seinem Blog vorstellt. Darüber hinaus ließe sich der Code künftig wohl noch weiter optimieren.

Speicher nach Bedarf

Die Kehrseite der Optimierung nennt Bouvier auch: Sie benötigt mehr Speicherplatz, weil für jede erzeugte Funktion eine ziemlich große Menge an Code für den JIT-Compiler anfällt. Das wird vor allem dann zum Problem, wenn der Code sogenannte Tables exportiert.

Den vergrößerten Speicherbedarf haben die Entwickler über Lazy-Stub-Generation für bestimmte Funktionen verringert. Grob vereinfacht werden die Stubs nur bei Bedarf erzeugt, was insgesamt deutlich weniger Speicher benötigt. Der Blogpost zeigt die Verbesserung in einem Benchmark, erklärt ausführlich die Details und nennt zudem noch einige weitere Neuerungen für Webassembly, an denen der Entwickler beteiligt ist.



Anzeige
Hardware-Angebote
  1. 529,00€
  2. täglich neue Deals bei Alternate.de
  3. (reduzierte Überstände, Restposten & Co.)
  4. ab 369€ + Versand

FreiGeistler 09. Jul 2018

Was die Timing-Attacken betrifft: Für den Firefox empfiehlt das privacy-handbuch folgende...

Port80 08. Jul 2018

wasm ist bei mir um den Faktor 3 schneller. Das ist schon interessant. Die Frage ist...

nikeee13 06. Jul 2018

Kannst du mir dafür ne Quelle geben? Blogpost, Artikel oder Mailinglisten-Mails reichen...

sg (Golem.de) 06. Jul 2018

Danke für den Hinweis, ist jetzt behoben.


Folgen Sie uns
       


Dell XPS 13 (7390) - Hands on

Das XPS 13 Convertible (7390) ist Dells neues 360-Grad-Gerät: Es nutzt Ice-Lake-Chips für doppelte Geschwindigkeit, hat ein höher auflösendes Display, eine nach oben versetzte Kamera und eine magnetisch arbeitende Tastatur.

Dell XPS 13 (7390) - Hands on Video aufrufen
Raumfahrt: Galileo-Satellitennavigation ist vollständig ausgefallen
Raumfahrt
Galileo-Satellitennavigation ist vollständig ausgefallen

Seit Donnerstag senden die Satelliten des Galileo-Systems keine Daten mehr an die Navigationssysteme. SAR-Notfallbenachrichtigungen sollen aber noch funktionieren. Offenbar ist ein Systemfehler in einer Bodenstation die Ursache. Nach fünf Tagen wurde die Störung behoben.


    iPad OS im Test: Apple entdeckt den USB-Stick
    iPad OS im Test
    Apple entdeckt den USB-Stick

    Zusammen mit iOS 13 hat Apple eine eigene Version für seine iPads vorgestellt: iPad OS verbessert die Benutzung als Tablet tatsächlich, ein Notebook-Ersatz ist ein iPad Pro damit aber immer noch nicht. Apple bringt aber endlich Funktionen, die wir teilweise seit Jahren vermisst haben.
    Ein Test von Tobias Költzsch

    1. Tablets Apple bringt neues iPad Air und iPad Mini
    2. Eurasische Wirtschaftskommission Apple registriert sieben neue iPads
    3. Apple Es ändert sich einiges bei der App-Entwicklung für das iPad

    Energie: Wo die Wasserstoffqualität getestet wird
    Energie
    Wo die Wasserstoffqualität getestet wird

    Damit eine Brennstoffzelle einwandfrei arbeitet, braucht sie sauberen Wasserstoff. Wie aber lassen sich Verunreinigungen bis auf ein milliardstel Teil erfassen? Am Testfeld Wasserstoff in Duisburg wird das erprobt - und andere Technik für die Wasserstoffwirtschaft.
    Ein Bericht von Werner Pluta

    1. Autos Elektro, Brennstoffzelle oder Diesel?
    2. Energiespeicher Heiße Steine sind effizienter als Brennstoffzellen
    3. Klimaschutz Großbritannien probt für den Kohleausstieg

      •  /