Auch Apple arbeitet an schnellerem JavaScript

Nicht nur Google und Mozilla versuchen, durch ihre Arbeiten an V8 und SpiderMonkey die Ausführungsgeschwindigkeit von JavaScript-Code an die nativen Codes heranzuführen.

In Pocket speichern vorlesen Druckansicht
Lesezeit: 2 Min.
Von
  • Julia Schmidt

Mit einem Update hat die in Apples HTML-Rendering-Engine WebKit enthaltene JavaScript-Engine JavaScriptCore (JSC) ein alternatives Backend für den sogenannten DFG-JIT-Compiler (Data Flow Graph, Just in Time) erhalten, das allerdings vorerst nur für Mac-Nutzer zur Verfügung steht. Die unter dem Projektnamen FTL JIT (Fourth Tier LLVM JIT) erarbeitete Komponente ist derzeit noch ein experimentelles Feature, dass per Kommandozeilen-Flag zu aktivieren ist. Nutzer sollen durch sie eine bessere Performance bei JavaScript-Anwendungen erhalten

Wie der Name impliziert, setzt FTL die Compiler-Infrastruktur LLVM zum Verbessern der Leistungsfähigkeit ein. Es verwendet einige DFG-Funktionen wieder, unterscheidet sich aber insofern, als dass es den Maschinencode nicht aus der DFG IR (Intermediate Representation) generiert, sondern über die IR von LLVM geht und im Anschluss deren Optimierungs-Pipeline und Backend bemüht. Darüber hinaus kommen auch Phasen des DFG zum Einsatz – ist der FTL-Modus aktiv, wird der Code vor dem Umwandeln in LLVM IR noch in DFG-SSA IR (Static Single Assignment) transformiert, wo er weitere Verbesserungsmaßnahmen wie Loop-invariant Code Motion (LICM) durchläuft. Informationen zum Einsatz auf dem Mac stehen im WebKit-Wiki zur Verfügung.

Da FTL JIT bis jetzt nur auf dem Mac läuft, lässt sich schlecht abschätzen, wie sich die Verbesserungen über die Plattformen hinweg mit anderen Engines vergleichen lassen. Ein Blick auf die JavaScript-Testseite "Are we fast yet?" zeigt beim Vergleich auf OS X (64 Bit) allerdings schon einiges an Potenzial, zum Teil schneidet JSC dort besser ab als Chrome. Interessant ist Apples Optimierungsversuch auch, da er sich nicht auf Techniken wie asm.js bezieht, das bei Mozilla zum Einsatz kommt. (jul)