Software::Browser
Chrome beschleunigt JavaScript mit TurboFan
Seit Version 41 enthält der von Google entwickelte Webbrowser Chrome den neuen JavaScript-Compiler TurboFan. Bisher wurde eine Beschleunigung von JavaScript um bis zu 29 Prozent erreicht, und das soll noch nicht das Ende sein.
Ben L. Titzer
Geschwindigkeitsvorteil des JavaScript-Compilers TurboFan beim Octane zlib-Test
Im Chromium-Blog
berichtet der Entwickler Ben L. Titzer von der vielversprechenden Weiterentwicklung des JavaScript-Ökosystems.
ECMAScript 2015 oder 6.0 hat erfolgreich die Standardisierung durchlaufen, darüber hinaus gibt es experimentelle Neuerungen wie
Strong Mode, eine Verschärfung des Strict Mode von JavaScript, der weitere ungünstige Funktionalität fallen lässt, um höhere Ausführungsgeschwindigkeit erzielen zu können. Der Ansatz ähnelt dem kürzlich vorgestellten
Projekt WebAssembly, das ebenfalls nur eine gut optimierbare Teilmenge von JavaScript unterstützt.
Die neuen Anforderungen benötigen einen flexiblen Just-in-Time-Compiler, schreibt Titzer. Daher hat ein Team bei Google für Chrome einen neuen Just-in-Time-Compiler für die JavaScript-Engine V8 namens TurboFan entwickelt. TurboFan ist seit Version 41 in Chrome und Chromium enthalten und wird für einen Teil des JavaScript-Codes verwendet. Schon zuvor gab es in V8 einen Just-in-Time-Compiler namens CrankShaft. Dieser wird nach wie vor für die Teile des Codes verwendet, die TurboFan nicht abdeckt. Das Ziel ist jedoch, CrankShaft vollständig zu ersetzen.
Laut Titzer optimiert TurboFan aber schon jetzt mehr Code als CrankShaft. Er unterstützt flexible und dynamische Optimierungsmodi und soll leichter zu pflegen und zu erweitern sein. Erste Messungen zeigen in einigen Benchmarks eine Überlegenheit von TurboFan gegenüber seinem Vorgänger. So soll er im Zlib-Test des Octane-Benchmarks um 29% schneller sein. Sicher gibt es aber noch zahlreiche Stellen, die noch verbessert werden müssen. Die Anwender von Chrome und Chromium dürfen damit rechnen, dass es in den nächsten Versionen schrittweise weitere Beschleunigungen in der JavaScript-Ausführung geben wird, ohne dass sie dafür etwas ändern müssen.