Firefox bekommt schnelleren JIT-Compiler

Der jetzt in den Entwicklercode übernommene Compiler IonMonkey soll die Ausführung von JavaScript-Programmen in Firefox um bis zu 26 Prozent beschleunigen. Erreicht wird das durch plattformneutralen Zwischencode.

In Pocket speichern vorlesen Druckansicht 110 Kommentare lesen
Lesezeit: 2 Min.
Von
  • Christian Kirsch

Mit dem jetzt in den Nightly-Builds von Firefox integrierten JIT-Compiler IonMonkey wollen die Entwickler JavaScript-Code in dem freien Browser gegenüber den Vorgängerversionen wesentlich schneller ausführen können. Möglich macht das der Einsatz traditioneller Compiler-Techniken, ausgehend von einem plattformneutralen Zwischencode (Intermediate Code). Erst daraus erstellt IonMonkey den spezifischen Maschinencode für den jeweiligen Rechner. Die bisherigen JavaScript-Compiler in Firefox (SpiderMonkey, TraceMonkey und der vor zwei Jahren eingeführte JägerMonkey) erzeugten den Maschinencode direkt.

Den Intermediate Code optimiert IonMonkey, etwa durch Extraktion von Schleifen-Invarianten, das Entfernen redundanten Codes und die von Poletto und Sarkar erfundene (PDF) Linear Scan Register Allocation (LSRA). Die letztgenannte Technik verwenden auch der Hotspot-Compiler in Oracles Java-VM und die freie Compiler-Infrastruktur LLVM.

Die Mehrarbeit in IonMonkey bringt nach Angaben der Entwickler deutlich höheres Tempo. So soll der Mozilla-eigene Benchmark Kraken rund 26 Prozent schneller laufen als im aktuellen Firefox 15. Googles Benchmark für seine JavaScript-Engine V8 führe das Nightly-Build etwa 20 Prozent schneller aus als die aktuelle Version.

Ein Kurztest unter Mac OS X 10.8 auf einem iMac brachte für Kraken eine ähnliche Verbesserung und zeigt damit auch einen Vorsprung der Firefox-Nightly von rund 8 Prozent gegenüber Googles Chrome 21. Bei V8 behielt Chrome allerdings seinen Vorsprung: Es erreichte über 16000 Punkte, Firefox 18 kam auf 8800 und der aktuelle Firefox 7100.

Firefox 18 wird mit IonMonkey am 8. Oktober als "Aurora"-Version erschienen, am 20 November als Beta. (ck)