r   e   k   l   a   m   a
r   e   k   l   a   m   a

Dzięki współbieżnej kompilacji JavaScriptu Chrome 33 przestaje się „jąkać”

Strona główna AktualnościOPROGRAMOWANIE

Google Chrome, niegdyś najszybsza z przeglądarek, po drodze jakoś utracił pierwszeństwo w ogólnej wydajności. Pod względem szybkości uruchomienia, czasu ładowania stron czy zużycia pamięci odczuwalnie przegrywa z Internet Explorerem 11. Wciąż jednak Chrome jest przeglądarką najwydajniejszą, jeśli chodzi o szybkość uruchamiania JavaScriptu, co da się zobaczyć zarówno w działaniu aplikacji webowych, jak i syntetycznych benchmarkach. Przewaga ta niebawem jeszcze bardziej wzrośnie za sprawą ulepszeń, jakie trafiły do silnika skryptowego V8 google'owej przeglądarki, które pojawiły się w wersji 33, wprowadzonej właśnie do kanału beta.

JavaScript – podstawowy język programowania dla przeglądarek – jest językiem interpretowanym, jak zaś wiadomo, interpretowany kod jest znacznie wolniejszy od kodu skompilowanego do języka maszynowego korzystającego bezpośrednio ze zbioru instrukcji procesora. Dlatego też twórcy silników skryptowych, służących do uruchamiania kodu JS w przeglądarkach, robią co mogą, by przyspieszyć ten proces. Silnik Chrome wykorzystuje w tym celu infrastrukturę kompilacji o nazwie Crankshaft (wał korbowy), pozwalającą na skompilowanie JavaScriptu do kodu maszynowego przed jego uruchomieniem.

Proces kompilacji darmowy nie jest, więc aby zminimalizować narzut, V8 kompiluje kod JavaScriptu bez żadnych optymalizacji, tak szybko, jak to jest możliwe. Jeśli jednak kod ten będzie wykorzystywany częściej, Crankshaft skompiluje go ponownie, tym razem ze wszystkimi możliwymi optymalizacjami, służącymi wzrostowi wydajności, już w trakcie jej działania.

r   e   k   l   a   m   a

Prowadzi to jednak do sporadycznych, ale odczuwalnych zacięć w działaniu przeglądarki. Wiążą się one z tym, że obciążający w wysokim stopniu rdzeń procesora proces kompilacji z optymalizacjami działa w tym samym wątku, w którym uruchamiana jest aplikacja. Kompilacja kodu o nieujednoliconych pętlach i licznych ścieżkach może więc doprowadzić do chwilowego zamrożenia działania aplikacji czy gubienia ramek w grach.

W Chrome 33 Beta rozwiązano ten problem. Kompilacja odbywa się w oddzielnych wątku, działającym współbieżnie do wątka aplikacji. Prekompilowany kod JavaScriptu może więc działać bez przeszkód, gdy trwa optymalizacja jego kluczowych elementów. Zaprezentowane przez deweloperów Chromium wyniki robią spore wrażenie – dzięki współbieżnej kompilacji w teście Mandreel/Octane 2.0 Chrome uzyskało o 27% lepszy wynik niż przy kompilacji w jednym wątku, unikając przerwy w działaniu trwającej ponad 600 ms. Ulepszenie to jest jeszcze bardziej odczuwalna w wymagających graficznie aplikacjach, takich jak demo Citadel.

Zmiany zostały wprowadzone zarówno do desktopowej, jak i mobilnej wersji beta Google Chrome. Stabilne Chrome 33 pojawi się już w marcu – i wtedy powinny skończyć się nierzadkie problemy z zacinaniem webowych aplikacji czy mediów w google'owej przeglądarce. Gdy to nastąpi, może w dalszej kolejności deweloperzy Chromium zainteresują się wreszcie ekstremalnym zużyciem pamięci przez tę przeglądarkę. Dziś Chrome 31 zużywa przy otwarciu nowej karty niemal 100 MB RAM, podczas gdy Firefox 25 potrzebuje na to 49 MB, a Internet Explorer 11 tylko 30 MB.

© dobreprogramy
r   e   k   l   a   m   a
r   e   k   l   a   m   a

Komentarze

r   e   k   l   a   m   a
r   e   k   l   a   m   a
Czy wiesz, że używamy cookies (ciasteczek)? Dowiedz się więcej o celu ich używania i zmianach ustawień.
Korzystając ze strony i asystenta pobierania wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.