publikuj: Opublikuj w wykop.pl Opublikuj we flaker.pl Opublikuj na OSnews.pl Opublikuj w delicious wydrukuj
4 skomentuj »

TAGI: jaegermonkey , spidermonkey , tracemonkey , jit , javascript , kompilator , mozilla

2010-03-01 11:45  |  Adam Golański

JägerMonkey: myśliwska małpa przyśpieszy Firefoksa?

JägerMonkey: myśliwska małpa przyśpieszy Firefoksa?

Trudno temu zaprzeczyć – na dzisiaj Mozilla wyścig engine'ów skryptowych przegrała. Firefox 3.6 jest najpowolniejszą spośród nowoczesnych przeglądarek – ustępuje Operze 10.50, Chrome 4 i Safari 3. Czy jest jeszcze jakaś szansa dla wysłużonego kompilatora TraceMonkey? Nowy projekt Mozilli o nazwie JägerMonkey ma pozwolić Firefoksowi na nadrobienie strat.

Głównym problemem z TraceMonkey była, jak pisze David Mandelin z Mozilli, niemożność poradzenia sobie z kodem, którego nie dało się łatwo śledzić (trace). Kompilator był całkiem wydajny dla kodu, który był podatny na śledzenie (np. w teście math-cordic Sunspidera pozwalał na dziewięciokrotne przyśpieszenie), ale w pozostałych wypadkach nic nie dawał – np. w teście date-format-tofte, w którym w głównej pętli wywoływana była funkcja eval, wykorzystanie TraceMonkeya pozwalało na przyśpieszenie jedynie o 5%.

David Anderson, kolejny z deweloperów projektu, podsumował to następująco: „TraceMonkey ma dopalacze rakietowe, więc leci bardzo szybko gdy dopalacze są włączone, ale dopalacze nie zawsze mogą być włączone”.

Wiele czynników uniemożliwia zastosowanie strategii śledzenia w kompilatorze JIT. Większość skryptów, z którymi są problemy, można zakwalifikować do kilku kategorii:

  • programów, w których przebieg sterowania jest bardzo rozgałęziony. Śledzenie działa poprzez generowanie natywnego kodu dla ścieżek programu – jeśli program ma w pewnym momencie tysiąc ścieżek, TraceMonkey musiałby wygenerować tysiąc przebiegów z natywnym kodem, to zaś zajęłoby bardzo dużo pamięci. Dlatego po przekroczeniu pewnej liczby ścieżek TraceMonkey staje i wraca do interpretera.

  • programów, w których występuje wiele kombinacji typów. Jako że kod generowany jest oddzielnie dla każdego typu, to dla każdej kombinacji konieczne jest oddzielne odwzorowywanie zmiennych na typy.

  • programów, które w swoich pętlach wywołują eval. TraceMonkey musi znać wszystkie zmienne i ich typy, aby wygenerować zoptymalizowany kod. Ale skoro eval może zrobić praktycznie wszystko, to TraceMonkey musi się poddać i oddać sprawę interpreterowi.

Istnieją jednak inne niż śledzące (trace) typy kompilatorów JIT. Metodyczny (method) JIT kompiluje każde wyrażenie w metodzie tylko raz. Dodatkowo podział zachodzi względem obowiązkowej (mandatory) specjalizacji, a specjalizacji lekkiej (lite). Kompilatory JIT, które korzystają z lekkiej specjalizacji, nie mają problemów z eval czy wieloma kombinacjami typów, choć są znacznie wolniejsze od tych, które korzystają ze specjalizacji obowiązkowej. Oba te podejścia mogą się jednak dopełniać – i to właśnie ma się ujawnić w nowym kompilatorze dla SpiderMonkeya.

«poprzednia 1 2 następna »

publikuj: Opublikuj w wykop.pl Opublikuj we flaker.pl Opublikuj na OSnews.pl Opublikuj w delicious wydrukuj
4 skomentuj »

Komentarze

  • marcin__

    #1 marcin__ 2010-03-01 18:16:54 0

    Napiszcie lepiej czemu V8 w Chrome jest taki szybki, albo jak to się stało, że Opera z bardzo wolnej przeglądarki przerodziła się nagle w jedną z najszybszych.

    IP: 83.31.167.[...] Mozilla/5.0 (Windows; U; Windows NT 6.1; pl; rv:1.9.2) Gecko/20100115 Firefox/3.6

  • chrome

    #2 chrome 2010-03-01 19:05:21 0

    @marcin

    Po prostu wzięli się do pracy zamiast twierdzić że szybkość nie jest kluczowa. Google zatrudniło odpowiednich ludzi, zagwarantowało finanse i powiedziało im że chcą mieć najszybszy soft. Podobnie zrobiła Opera.

    W grudniu Opera pokazała wersję 10.50 która pokonała Google Chrome 4.0 (silnik V8 1.3). Zamiast się poddać autorzy V8 jeszcze ostrzej wzięli się do pracy. Aktualne buildy Chromium 5.0 na silniku V8 2.1.2 są szybsze od Opery i Chrome 4.0 o jakieś 40-50% w testach Futuremark PeaceKeeper. To pokazuje że jak się chce to można.

    Ciekawe jak wypadnie IE9. Podobno jakieś prezentacje mają zrobić już w tym miesiącu. 

    IP: 90.156.104.[...] Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.0.249.89 Safari/532.5

  • marcin__

    #3 marcin__ 2010-03-02 17:46:16 0

    Obecnie wg. testów dromaeo.com najnowsza opera 10.50 jest jakieś 40% szybsza od chrome (5.0.335.1). Co ciekawe chrome sporo szybciej wykonuje DOM queries (tj. getElementsByName) - niektóre nawet 4 razy.

    IP: 83.6.254.[...] Mozilla/5.0 (Windows; U; Windows NT 6.1; pl; rv:1.9.2) Gecko/20100115 Firefox/3.6

  • fake handbags6573

    #4 fake handbags6573 2010-10-16 05:52:34 0

    hing there is cubic  designer fashion jewElry hing there is cubic  replica cHanel for cheap

    IP: 117.44.44.[...] Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.0.19) Gecko/2010031422 Firefox/3.0.19

Uwaga! Możesz zarejestrować się w serwisie i w ten sposób zarezerwować swój nick oraz ominąć konieczność ciągłego odczytywania wyrazów.

Aby dodać komentarz, musisz podać swój nick, treść komentarza oraz poprawnie przepisać oba słowa z obrazka (słowa muszą być rozdzielone spacją).
W treści komentarza można używać języka formatowania BBcode.

Polecane książki

Czytaj Webhosting

Chcesz być na bieżąco z naszymi informacjami? Zapisz się na Newsletter.

Zarejestruj domenę

Sprawdź dostępność swojej domeny:

.pl: 0 zł   .com: 19.90 zł
.com.pl: 0 zł   .eu: 19.90 zł