11 Reaktionen

Mozillas asm.js soll JavaScript deutlich schneller machen können

Geschätzte Lesedauer:

David Herman, Luke Wagner und Alon Zakai (Entwickler von Emscripten) von Mozilla haben mit asm.js ein JavaScript-Subset entwickelt, welches nahezu die Performance von nativ geschriebenen Code erreichen soll. Mit OdinMonkey arbeitet man außerdem daran, einen entsprechenden Compiler in Firefox zu integrieren.

asm.js ist für Code ausgelegt, welcher über Compiler wie Emscripten oder Mandreel in JavaScript übersetzt worden ist, und soll die Ausführung von JavaScript spürbar beschleunigen können. Es handelt sich dabei um ein Subset von JavaScript, womit ein asm.js geschriebener Code auch von JavaScript-Engines ausgeführt werden kann, welche asm.js nicht unterstützen. Dafür optimierte Engines sollen allerdings JavaScript deutlich schneller ausführen und entsprechender Code ungefähr halb so schnell wie in C oder C++ geschriebener Code sein, womit die JavaScript-Performance vergleichbar mit C# respektive Java sein soll.  Bei Mozillas BananaBread-Demo konnte bereits jetzt eine Performance-Verbesserung von zwei- bis viermal gegenüber Mozillas SpiderMonkey ohne asm.js-Unterstützung beziehungsweise Googles V8-Engine erreicht werden.

asm.js Benchmark

asm.js Benchmark
Benchmark-Quelle: kripken.github.com

Unter dem Namen OdinMonkey läuft die Entwicklung und Integration eines entsprechenden Compilers in Firefox. Technisch Interessierten sei dieser Artikel empfohlen, welcher technische Details erklärt.

Dieser Artikel wurde von Sören Hentzschel verfasst.

Sören Hentzschel ist Webentwickler aus Salzburg. Auf soeren-hentzschel.at informiert er umfassend über Neuigkeiten zu Mozilla. Außerdem ist er Betreiber von camp-firefox.de, der ersten Anlaufstelle im deutschsprachigen Raum für Firefox-Probleme aller Art. Weitere Projekte sind firefox.agenedia.com, mozilla.de, firefoxosdevices.org sowie sozone.de.

5 Kommentare - bis jetzt!

Eigenen Kommentar verfassen
  1. MagnaSedna
    schrieb am :

    Mal wieder ein interessanter Ansatz, den Mozilla da verfolgt. Allerdings hätte ich mir eher mal ein Statement zum kürzlich vorgestellten peer.js von ihnen gewünscht. Siehe hier:

    http://www.golem.de/news/peerjs-peer-to-peer-kommunikation-fuers-web-1302-97624.html

    Als Ergänzung zu WebRTC wäre das gerade eine gute Ergänzung, da mit peer.js ein zentrales Problem (Dateientransfer) aus der Welt geschafft werden könnte (auch wenn ich zugebe, dass das eher später im Jahr für Thunderbird 24 bzw. insbesondere für Instantbird interessant werden könnte).

  2. Sören Hentzschel Verfasser des Artikels
    schrieb am :

    Ich kenne peer.js nicht und weiß entsprechend gar nichts darüber. 🙂 Dateitransfers sind mittels WebRTC aber ja möglich. Die Frage wäre für mich also, was genau peer.js gegenüber reinem WebRTC leistet beziehungsweise welche Probleme damit aus der Welt geschafft werden. Ich muss dazu sagen, ich weiß auch nicht, welche Limitierungen WebRTC hat.

    File-Transfers, eventuell sogar über WebRTC, stehen auf jeden Fall zumindest auf der Brainstorming-Liste für den diesjährigen Google Summer of Code bei Instantbird. Wäre wirklich schön, wenn das jemand umsetzen würde, denn bevor das nicht in Instantbird gelandet ist, wird es ganz sicher auch nicht in Thunderbird landen.

  3. schrieb am :

    Aua – das ist jetzt aber mal ein Artikel für absolute Insider. Verstehen tue ich nicht das Geringste. Aber ich bin ja auch kein Entwickler (schmunzel-schmunzel).Und ich will und muss im Leben ja auch nicht Alles verstehen.

  4. Anon
    schrieb am :

    Bin erst jetzt auf den Artikel gestoßen und mich würde dabei interessieren wie weit die Einschränkung von asm.js geht bzw. wie klein die Untermenge ist. Ist sie so groß, dass man eigentlich alle üblichen Aufgaben auch damit erledigen könnte bzw. vielleicht sogar jQuery und andere Libraries mit asm.js laufen lassen könnte?

  5. Sören Hentzschel Verfasser des Artikels
    schrieb am :

    Ich glaube nicht, dass eine Bibliothek wie jQuery davon profitieren kann, denn asm.js ist quasi aus C/C++ in ein Subset von JavaScript kompilierter Code. Gewöhnliches JavaScript kann nicht in asm.js kompiliert werden. Gewöhnliches JavaScript profitiert von anderen Optimierungen der Engine.

Und jetzt du! Deine Meinung?

Erforderliche Felder sind mit einem Asterisk (*) gekennzeichnet. Die E-Mail-Adresse wird nicht veröffentlicht.
  1. Nach Absenden des Kommentar-Formulars erfolgt eine Verarbeitung der von Ihnen eingegebenen personenbezogenen Daten durch den datenschutzrechtlich Verantwortlichen zum Zweck der Bearbeitung Ihrer Anfrage auf Grundlage Ihrer durch das Absenden des Formulars erteilten Einwilligung.
    Weitere Informationen