Mozilla: asm.js soll Javascript deutlich schneller machen

Mit asm.js soll Javascript je nach Situation zwei- bis fünfmal schneller ausgeführt werden, als das in den derzeit schnellsten Javascript-Engines möglich ist. Der für asm.js geschriebene Code läuft allerdings auch in älteren Browsern.

Artikel veröffentlicht am ,
Javascript soll mit asm.js halb so schnell sein wie nativer Code.
Javascript soll mit asm.js halb so schnell sein wie nativer Code. (Bild: Alon Zakai)

Die Mozilla-Entwickler David Herman, Luke Wagner und Alon Zakai haben mit asm.js einen Ansatz entwickelt, mit dem sich die Ausführung von Javascript drastisch beschleunigen lässt. Gedacht ist asm.js vor allem für Javascript-Programme, die mit Hilfe von Compilern wie beispielsweise Emscripten aus anderen typensicheren Sprachen übersetzt werden.

Stellenmarkt
  1. IT-Systemadministrator (m/w/d)
    Verwaltungsgesellschaft der Akademie zur Förderung der Kommunikation mbH, Stuttgart
  2. Principal Data Engineer (m/f/d)
    über experteer GmbH, München
Detailsuche

Konkret handelt es sich bei asm.js um ein Javascript-Subset, so dass sich für asm.js geschriebener Code in jeder Javascript-Engine ausführen lässt. Neue Javascript-Engines, die auf asm.js aber vorbereitet sind, sollen in der Lage sein, den entsprechenden Code deutlich schneller auszuführen. Die Entwickler gehen davon aus, dass asm.js-Programme etwa halb so schnell sind wie nativer Code, der in C/C++ geschrieben wurde. Damit soll Javascript mit asm.js in etwa so schnell sein wie Java und C#.

  • asm.js im Benchmark-Vergleich (Bild: Alon Zakai)
  • asm.js im Benchmark-Vergleich (Bild: Alon Zakai)
asm.js im Benchmark-Vergleich (Bild: Alon Zakai)

Um diesen Geschwindigkeitssprung zu erreichen, führt asm.js strikte Typen für Integer und Floats sowie einen virtuellen Heap ein, der durch ein Typed Array repräsentiert wird. Integer-Variablen werden nach dem aktuellen Entwurf mit dem Anhang "|0" versehen, Floats wird ein "+" vorangestellt. Die Einhaltung der strikten Typen kann beim Parsen des Javascirpt-Codes überprüft werden, vorausgesetzt, die Javascript-Engine wird mit "use asm"; dazu angewiesen.

Kann der Code durch asm.js validiert werden, kann die Javascript-Engine einen Ahead-of-Time-Compiler verwenden und sicher sein, dass sich die Typen während der Laufzeit nicht verändern. Auch eine Garbage-Collection ist nicht notwendig, da sich die entsprechenden Programme über den virtuellen Heap selbst um die Speicherverwaltung kümmern.

Golem Akademie
  1. Python kompakt - Einführung für Softwareentwickler
    28.-29. Oktober 2021, online
  2. IT-Sicherheit für Webentwickler
    2.-3. November 2021, online
  3. Advanced Python - Fortgeschrittene Programmierthemen
    27.-28. Januar 2022, online
Weitere IT-Trainings

Das ermöglicht es, den entsprechenden Javascript-Code letztendlich deutlich schneller auszuführen, setzt aber eine Javascript-Engine voraus, die auf asm.js vorbereitet ist. Mozilla arbeitet derzeit an einer entsprechenden Anpassung seiner Javascript-Engine.

Die asm.js-Entwickler räumen ein, dass die gewählte Syntax nicht sehr hübsch ist, das aber sei Compilern wie Emscripten oder Mandreel egal. Dennoch erwägen sie, noch eine besser lesbare Syntax einzuführen.

Der große Vorteil von asm.js gegenüber Ansätzen wie Google Native Client soll darin bestehen, dass der für asm.js vorgesehene Code auch von bestehenden Javascript-Engines ohne Anpassungen ausgeführt werden kann. Und um die Vorteile von asm.js zu nutzen, bedarf es nur kleiner Anpassungen an den Engines. Googles Native Client muss hingegen vom Browser explizit unterstützt werden, was derzeit nur bei Chrome der Fall ist.

Wer asm.js heute schon ausprobieren will, benötigt dazu eine Entwicklerversion von Firefox aus dem Zweig Odinmonkey. Emscripten kann mit dem Schalter "ASM_JS=1" dazu gebracht werden, den passenden Code zu erzeugen.

Geht es nach Emscripten-Entwickler Alon Zakai, könnte asm.js auch die Basis sein, um VMs für andere Sprachen, beispielsweise Java und C#, im Browser zur Verfügung zu stellen, so dass auch Java- und C#-Code auf diesem Weg im Browser ausgeführt werden kann.

Details zu und der Entwurf einer Spezifikation von asm.js finden sich unter asmjs.org.

Bitte aktivieren Sie Javascript.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
  • ohne Werbung
  • mit ausgeschaltetem Javascript
  • mit RSS-Volltext-Feed


Aktuell auf der Startseite von Golem.de
Amtlicher Energiekostenvergleich  
Benzinkosten mehr als doppelt so teuer wie Ladestrom

Vom 1. Oktober an müssen große Tankstellen einen Energiekostenvergleich aushängen. Dabei schneiden Elektroautos derzeit am besten ab.

Amtlicher Energiekostenvergleich: Benzinkosten mehr als doppelt so teuer wie Ladestrom
Artikel
  1. Bundestagswahl 2021: Laschet und Scholz wollen beide Kanzler werden
    Bundestagswahl 2021
    Laschet und Scholz wollen beide Kanzler werden

    Die Union erzielt bei der Bundestagswahl 2021 ihr bislang schlechtestes Ergebnis. Dennoch will Spitzenkandidat Laschet Kanzler einer "Zukunftskoalition" werden.

  2. Bundesregierung: Erst 11 Prozent der Glasfaserförderung wurden ausgezahlt
    Bundesregierung
    Erst 11 Prozent der Glasfaserförderung wurden ausgezahlt

    Städte- und Gemeindebund verlangt, den Förder-Dschungel für Glasfaser zu beseitigen. Versuche gab es viele.

  3. Diablo 2 Resurrected im Test: Der dunkle Fürst der Zeitfresser ist auferstanden
    Diablo 2 Resurrected im Test
    Der dunkle Fürst der Zeitfresser ist auferstanden

    Gelungene Umsetzung für Konsolen, überarbeitete Grafik und Detailverbesserungen: Bei Diablo 2 Resurrected herrscht Lange-Nacht-Gefahr.
    Von Peter Steinlechner

Du willst dich mit Golem.de beruflich verändern oder weiterbilden?
Zum Stellenmarkt
Zur Akademie
Zum Coaching
  • Schnäppchen, Rabatte und Top-Angebote
    Die besten Deals des Tages
    Daily Deals • Alternate (u. a. DeepCool Matrexx 55 V3 ADD-RGB WH 49,98€) • Thunder X3 TC5 145,89€ • Toshiba Canvio Desktop 6 TB ab 99€ • Samsung 970 EVO Plus 2 TB 208,48€ • Lenovo-Laptops zu Bestpreisen • 19% auf Sony-TVs bei MM • WISO Steuer-Start 2021 10,39€ • Samsung Odyssey G7 499€ [Werbung]
    •  /