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 »
Komentarze
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.
Popularne
Nazwa padła ofiarą szantażystów, inni polscy hosterzy też zagrożeni?
22
Darmowy Internet od Aero2. Jak go zdobyć i jakie są prawdziwe koszta? Instrukcja krok po kroku
11
Programowanie w środowisku Android – wprowadzenie do projektowania aplikacji dla urządzeń mobilnych
17
Premiera Diablo 3 wzbudziła dyskusję na temat gier, które zawsze chcą być online
19
Nowy problem z Windows 8: bootuje się za szybko
10
Amerykańscy rodzice straszeni „e-narkotykami” dostępnymi w Sieci
21
Anonymous upubliczniają 1,7 GB danych wykradzionych Departamentowi Sprawiedliwości USA
12
Blueseed: libertariańska sztuczna wyspa przyciągnęła już ponad sto startupów z całego świata
8
Rewolucja w Firefoksie, nowa łatka czterokrotnie ograniczyła zużycie pamięci
20
Darmowy Internet od Aero2. Jak go zdobyć i jakie są prawdziwe koszta? Instrukcja krok po kroku
11
CVDazzle: makijaż jest w stanie pokonać automatyczne systemy ulicznego monitoringu
3
Programowanie w środowisku Android – wprowadzenie do projektowania aplikacji dla urządzeń mobilnych
17
Ubuntu 12.04 LTS już dostępny: stabilna dystrybucja na następne pięć lat?
28
Zostań webmasterem polskiego rządu, zarobisz na komfortowe życie dla siebie i swojej rodziny
33
Społeczność
piotrek____ @asdfgh - yup, też tak sądzę.
Tak jak wtedy ten przeciek o żołnierzu...
gonzales Javowcy pozdrawiają dotnetowców xD
kaziks Galaxy S II - u mnie po aktualizacji Firefox działa strasznie zacina się...
Doniek Szkoda że strona z demo nie działa - non stop się przeładowuje
bartez Niech zaczną jeszcze bardziej ograniczać programistów, to zdziwią się ilu...
Dave Smith Jestem Pastor Dave Smith prywatny pożyczkodawca pieniądze, z czego ponad...
marcusm Fajna reklama produktu za 500 zł
- Najdmen.pl: Konta www z wyłączonym licznikiem transferu od IONIC.pl (1)
- 2BE.PL: [Oferta] Promocja jak złoto w 2BE.PL (1)
- gardius: Dobra hurtownia sportowa (1)
- gardius: Tanie książki gdzie warto kupować? (1)
- Najdmen.pl: PROMOCJA, 500 DOMEN .EU ZA 1 PLN NETTO ! (1)
- VMLine: [Oferta] Serwery VPS Xen-HVM/OpenVZ z darmową administracją (2)
- Marek: Generowanie PDFa (2)
Polecane książki
Praca
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ł |









#1 marcin__ 2010-03-01 18:16:54 0
IP: 83.31.167.[...] Mozilla/5.0 (Windows; U; Windows NT 6.1; pl; rv:1.9.2) Gecko/20100115 Firefox/3.6
#2 chrome 2010-03-01 19:05:21 0
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
#3 marcin__ 2010-03-02 17:46:16 0
IP: 83.6.254.[...] Mozilla/5.0 (Windows; U; Windows NT 6.1; pl; rv:1.9.2) Gecko/20100115 Firefox/3.6
#4 fake handbags6573 2010-10-16 05:52:34 0
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