Login
Login-Name Passwort


 
Newsletter
Werbung

Mi, 12. September 2012, 16:36

Software::Web

JIT-Compiler Ionmonkey beschleunigt Firefox 18

Mozilla hat im aktuellem Nightly-Build von Firefox 18 seinen neuen Javascript-JIT-Compiler Ionmonkey eingebaut, der Javascript-Code gegenüber den Vorgängerversionen deutlich schneller ausführen soll.

mozilla.org

Mozillas bisherige Firefox-Javascript-Compiler Spidermonkey, bzw. Tracemonkey und die vor zwei Jahren eingeführte Jägermonkey-Engine erzeugen den Maschinencode direkt. Jetzt soll Spidermonkey einen neuen JIT-Compiler Ionmonkey bekommen, der den aktuellen Jägermonkey ergänzt. Ionmonkey arbeitet in Anlehnung an traditionelle Compiler-Techniken in drei Phasen und erzeugt aus dem Javascript-Code zunächst einen plattformneutralen Zwischencode, den sogenannten »Intermediate Code«, bzw. die »Intermediate Representation« (IR), auf die sich im zweiten Schritt verschiedene Algorithmen zur Optimierung anwenden lassen, bevor der Intermediate Code schließlich in Maschinencode übersetzt wird. Die Compiler-Architektur selbst ist so abstrakt wie möglich angelegt und daher in großen Teilen für x86, x86-64 und ARM identisch, sollte sich also mit geringem Aufwand auf andere Plattformen portieren lassen. Das Erzeugen der IR ermöglicht Ionmonkey nicht nur überhaupt erst das Analysieren und Optimieren des erzeugten Codes, sondern soll auch das Einfließen künftiger Verbesserungen der Javascript-Engine vereinfachen, weil sich neue Konzepte dann relativ leicht in Form von Plugins in die Optimierungen einbauen lassen. Da sich die meisten geschwindigkeitsbeeinflussenden Optimierungen erst mit der Zeit auswirken, profitieren vorrangig lange laufende Javascript-Applikationen von Ionmoney; für nur kurz laufende Applikationen kommt weiterhin Jägermonkey zum Einsatz.

Verschiede Optimierungen sind bereits vorhanden. So löst die Funktion »Loop-Invariant Code Motion« (LICM) wenn möglich Instruktionen aus Schleifen, »Sparse Global Value Numbering« (GVN) eliminiert redundanten Code und »Dead Code Elimination« (DCE) entfernt nicht genutzte Instruktionen. Eine weitere Optimierung ist »Linear Scan Register Allocation« (LSRA), die auch von Oracles Java-VM Hotspot-Compiler verwendet wird, ebenso wie von der freien Compiler-Infrastruktur LLVM. Laut Mozilla-Entwickler David Anderson soll Firefox 18 im Mozilla-eigenen Benchmark Kraken knapp 26 Prozent schneller als sein Vorgänger sein. Mit Googles Javascript-Benchmark V8 schafft Firefox 18 sieben Prozent gegenüber Firefox 16 und sogar 20 Prozent im Vergleich zu Firefox 15. Die Entwicklung von Ionmonkey bietet künftig noch weitere Ansatzpunkte. So wollen die Mozilla-Entwickler etwa in den nächsten Monaten daran arbeiten, die neue Javascript-Engine für »echte« Applikationen zu optimieren, nicht nur für synthetische Benchmarks.

Im Nightly Build von Firefox 18 ist Ionmonkey bereits aktiviert und soll in naher Zukunft auch im Entwicklungszweig der mobilen Firefox-Version aktiviert werden. Firefox 18 wird voraussichtlich am 8. Oktober in den Aurora-Kanal wechseln und ab dem 20. November im Beta-Kanal verfügbar sein.

Werbung
Kommentare (Insgesamt: 19 || Alle anzeigen || Kommentieren )
Re[6]: TAB-Trennung (Tom21, Do, 13. September 2012)
Re[5]: TAB-Trennung (Unerkannt, Do, 13. September 2012)
Re[5]: TAB-Trennung (Unerkannt, Do, 13. September 2012)
Re[4]: TAB-Trennung (i.MX515, Do, 13. September 2012)
Re[4]: TAB-Trennung (Tom21, Do, 13. September 2012)
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung