Mozillas asm.js soll JavaScript deutlich schneller machen können
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.
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.
Weitere aktuelle Artikel aus der Kategorie „Firefox“
5 Kommentare - bis jetzt!
Eigenen Kommentar verfassenUnd jetzt du! Deine Meinung?
6 Erwähnungen
- Mozilla und Epic Games haben Unreal Engine 3 für das Web portiert - soeren-hentzschel.at
- Epic Games veröffentlichen Epic Citadel-Demo (Unreal Engine 3) - soeren-hentzschel.at
- Erstes kommerzielles 3D-Spiel im Browser mit Mozillas asm.js-Technologie - soeren-hentzschel.at
- 2013 in Zahlen: Mozilla blickt auf das vergangene Jahr zurück - soeren-hentzschel.at
- Mozilla erreicht nächsten Meilenstein bei JavaScript-Performance - soeren-hentzschel.at
- GDC: Mozilla und Epic Games zeigen Unreal Engine 4 für das Web - soeren-hentzschel.at
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).
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.
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.
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?
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.