W Firefox zaktualizowany kompilator JIT, pod kodową nazwą WarpBuilder. Aby aktywować nowego JIT, w about:config zaproponowano opcję „javascript.options.warp”.
Zauważono, że WarpBuilder to dopiero pierwszy krok w kierunku włączenia nowych optymalizacji do przeglądarki, które planowane są na następny rok.
Nowy JIT pozwala na zwiększenie wydajności silnika JavaScript SpiderMonkey poprzez skrócenie wewnętrznych informacji o typach, śledzonych w silniku, oraz zastosowanie techniki cache'owania kodu pośredniego (CacheIR), wcześniej w interpreterze bajtkodów „baseline”, który zajmuje pośrednią niszę między zwykłym interpreterem a wstępnym kompilatorem JIT. Wprowadzone zmiany umożliwiły znaczne uproszczenie architektury JIT, zwiększenie responsywności, skrócenie czasu ładowania strony oraz redukcję zużycia pamięci.
, co nowy JIT pozwolił rozwiązać wiele problemów starego JIT IonBuilder, takich jak:
- Skomplikowana implementacja i potencjalne problemy z bezpieczeństwem;
- Dodatkowe koszty dla kodu Baseline/C++;
- Nadmierna specjalizacja prowadząca do niepotrzebnych rekopilacji;
- Tworzenie kodu pośredniego (Middle-level IR) w głównym wątku (w WarpBuilder główna kompilacja kodu pośredniego została przeniesiona do osobnego wątku);
- Dodatkowe zużycie pamięci na przechowywanie danych o typach i grupach obiektów (ObjectGroups).
W testach oceniających wydajność na podstawie wizualnych metryk, przy użyciu WarpBuilder zaobserwowano przyspieszenie o 5-15%. Prędkość testu Speedometer zwiększyła się o 10%. Testowanie na rzeczywistych stronach wykazało skrócenie czasu ładowania Google Docs o , wskaźnik przy otwieraniu sekcji Android w Reddit poprawił się o , pdfpaint działał szybciej o . Zużycie pamięci w teście spadło o 8%. statystyk w narzędziach dla deweloperów (devtools perf) również wykazały spadek zużycia pamięci o 8%.
Źródło: opennet.ru
