Wydajność silnika JavaScript

w dziale Opera
quiris napisał(a):

Pewnie wiecie, że głównym celem rozwoju wersji 7.20 była poprawa silnika JavaScript. Czy to się udało? Oceńcie sami.
Poniżej przedstawiam wyniki niektórych testów dostępnych na stronie: http://alladyn.art.pl/gandalf/MozillaTests/

UserAgent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; .NET CLR 1.1.4322)
Creating 200 layers - time - 881
Moving 200 layers 100 px to left - time - 3715
Cliping 200 layers - time - 190
Reverting z-index for 200 layers - time - 171

UserAgent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.5b) Gecko/20030825 Mozilla Firebird/0.6.1+
Creating 200 layers - time - 1042
Moving 200 layers 100 px to left - time - 8412
Cliping 200 layers - time - 311
Reverting z-index for 200 layers - time - 270

UserAgent: Opera/7.20 (Windows NT 5.0; U) [en]
Creating 200 layers - time - 841
Moving 200 layers 100 px to left - time - 2944
Cliping 200 layers - time - 20
Reverting z-index for 200 layers - time - 60

pablik napisał(a):

A oto moje wyniki na Win98SE i przeglądarkach: Opera 7.20b7, Opera 7.11, Mozilla Firebird i Internet Explorer 5.0:

                          O7.20b7  M.F.  O7.11   IE5.0
Creating 200 layers          2420  1700   8070    1480
Moving 200 layers            6040 16200  35530   12360
Cliping 200 layers             60   660   1760     660
Setting Opacity 10%          1210  7410   1320   70030
Reverting z-index for 200 l.   60   500   2200     550
Mov. with changing o. & c.   8080 33280  78150  103530
Inputing txt into 200 l.     2860   710   2800     930
Resizing 200 layers          1370  1100   6260    1160


Jak widać czasowo Opera poradziła sobie świetnie, lecz wcale nie zasługuje na żadną pochwałę!

Po pierwsze przeszła test Cliping 200 layers, lecz na ekranie nie pojawiły się żadne efekty, prostokąty zostały tej samej wielkości, w Mozilli i IE rezultat był taki jak powinien wyglądać, zarówno w O 7.20 jak i 7.11 nie stało się nic.
Po drugie testy Setting Opacity 10% i Moving with changing opacity and clip poprawnie przeszedł tylko... IE 5.0. W pozostałych przeglądarkach prostokąty zostały tego samego koloru, jedynie w Explorerze stały się półprzezroczyste.
Z tego co było u mnie widoczne podczas testowania Opera nie wspierała funkcji clip i opacity, Mozilla nie wspierała opacity, a jedyną przeglądarka w której efekty na ekranie zgadzały się z opisem testu był Internet Explorer.
Jedyne pozytywne zjawisko to to, że w O7.11 i O7.20 rezultaty ekranowe były takie same, lecz O7.20 była wiele szybsza.

squeal napisał(a):

Originally posted by pablik
Jak widać czasowo Opera poradziła sobie świetnie, lecz wcale nie zasługuje na żadną pochwałę!

Po pierwsze przeszła test Cliping 200 layers, lecz na ekranie nie pojawiły się żadne efekty, prostokąty zostały tej samej wielkości, w Mozilli i IE rezultat był taki jak powinien wyglądać, zarówno w O 7.20 jak i 7.11 nie stało się nic. Po drugie testy Setting Opacity 10% i Moving with changing opacity and clip poprawnie przeszedł tylko... IE 5.0.


Hola, hola! W standardach nie ma czegoś takiego jak opacity. Test używa tutaj niestandardowych metod IE (filter) i Gecko (moz-opacity). To nie ma prawa i nie powinno zadziałać w Operze. W sumie to akurat Opera z tych trzech przeglądarek robi to poprawnie - to znaczy nie robi nic.

Przy clipping problem jest w tym, że Opera nie ukrywa tła. Taki bug. Zawartość diva by pewnie zniknęła. To nie jest związane z JavaScriptem.

Operze, która zawsze z JavaScriptem kulała, udało się (najwyraźniej) w ciągu jakichś trzech miesięcy (!) dogonić konkurencję... Jeśli to nie zasługuje na pochwałę, to ja już nie wiem, co może...

michmaj napisał(a):

Originally posted by squeal
Hola, hola! W standardach nie ma czegoś takiego jak opacity. Test używa tutaj niestandardowych metod IE (filter) i Gecko (moz-opacity). To nie ma prawa i nie powinno zadziałać w Operze.


Ale fajnie by było jakby działało.

pablik napisał(a):

No może troche przecholowałem, odszczekuję. :clown:
Jednak ponieważ przeglądarki zachowują się różnie na tych testach, ich prędkość można porównywać tylko według dwóch pierwszych i dwóch ostatnich. Jak widać O7.20 szła tutaj dość równo z konkurencją.

quiris napisał(a):

Więcej testów na stonie: http://klub.chip.pl/quiris/testy_js.html

Zwróćcie uwagę jaką bzdurę pokazują testy syntetyczne. Wynika z nich, że O7.11 jest wydajniejsza od 7.20!

michmaj napisał(a):

Originally posted by quiris
Więcej testów na stonie: http://klub.chip.pl/quiris/testy_js.html

Zwróćcie uwagę jaką bzdurę pokazują testy syntetyczne. Wynika z nich, że O7.11 jest wydajniejsza od 7.20!


A mierzyłeś u siebie? Strona podaje prawidłowe proporcje.

Natomiast teraz powiem coś z mojego odczucia i przemyślenia i nie musi to być prawdziwe. Nie znam się na JS i nie używam poprawnej terminologii:
W Operze 7.20 znacznie poprawiono działanie JavaScriptu który coś robi na ekranie, coś wyświetla, przesuwa, maluje i dorównuje ono teraz Mozilli i IE (na moim komputerze zwykle przewyższa).
Natomiast w Operze wolniejsza niż zarówno w IE i Mozilla jest część JavaScriptu odpowiedzialna za obliczenia matematyczne, operacje logiczne, porównywanie tekstu, wyszukiwanie łańcuchów znaków w większym łańcuchu, dzielenie, łączenie, modyfikowanie łańcuchów znaków, operacje na tablicach.

Może można to inaczej powiedzieć: JavaScript jest nadal wolniejszy ale rendering i aktualizacja strony w trakcie działania skryptu jest szybsza niż w innych przeglądarkach (szkoda tylko że przewijanie strony z dużymi obrazkami jest takie wolne).

Zdaje mi się, że jak zrobic skrypt który w pętli będzie długo wykonywał jakieś obliczenia to Opera będzie najwolniejsza. Ale jak będzie miał w pętli wykonywać obliczenia i na przykład na ich podstawie rysować kwadraty (div) o odpowiednim kolorze na stronie to już Opera co najmniej dorównuje IE i Mozilli.

Ale może mi się tylko zdaje.

quiris napisał(a):

Originally posted by michmaj
A mierzyłeś u siebie? Strona podaje prawidłowe proporcje.


To jest strona z wynikami testów, które przeprowadziłem dziś na swoim domowym komputerze. Strona powstała na potrzeby komentarza do newsa: http://hedera.linuxnews.pl/_news/2003/08/29/_long/2131.html


Natomiast teraz powiem coś z mojego odczucia i przemyślenia i nie musi to być prawdziwe.

[/QUOTE]
Najwyraźniej twoje przemyślenia oddają rzeczywistość, dlatego się zgadzam, że tak się rzeczy mają.
Marcoos w komentarzu do ww. newsa najtrafniej to ujął: W Operze zdecydowanie poprawiono DOM, czyli JS w akcji renderowania stron.

michmaj napisał(a):

Originally posted by quiris
To jest strona z wynikami testów, które przeprowadziłem dziś na swoim domowym komputerze. Strona powstała na potrzeby komentarza do newsa: http://hedera.linuxnews.pl/_news/2003/08/29/_long/2131.html


Napisałeś ten post tak jakbyś się z tymi wynikami nie zgadzał, a przynajmniej ja zrozumiałem, że twierdzisz, że to bzdura.
Czyli wszystko się zgadza.


Originally posted by quiris

Najwyraźniej twoje przemyślenia oddają rzeczywistość, dlatego się zgadzam, że tak się rzeczy mają.
Marcoos w komentarzu do ww. newsa najtrafniej to ujął: W Operze zdecydowanie poprawiono DOM, czyli JS w akcji renderowania stron.


W 7.20 zdecydowanie poprawiono DOM w stosunku do 7.11 ale, wynikałoby z testu, nieznacznie pogorszono te matematyczno, logiczno, tekstowo, pętlowo, rekursywne, tablicowe części JS (a przynajmniej jest to duzo wolniejsze niz w Mozilli).

quiris napisał(a):

Originally posted by michmaj
W 7.20 zdecydowanie poprawiono DOM w stosunku do 7.11 ale, wynikałoby z testu, nieznacznie pogorszono te matematyczno, logiczno, tekstowo, pętlowo, rekursywne, tablicowe części JS (a przynajmniej jest to duzo wolniejsze niz w Mozilli).


No właśnie i to mnie zastanawia. Z drugiej strony marcoos podał tam wyniki swoich opracowanych testów i Opera już tak bardzo nie odstaje.

squeal napisał(a):

Originally posted by quiris
Z drugiej strony Marcoos podał tam wyniki swoich opracowanych testów i Opera już tak bardzo nie odstaje.


Zwłaszcza zastanawiały mnie różnice w wynikach pomiędzy testami marcoosa a robiącymi to samo (for, while) testami na virtuelvis. Powód jest... dziwny. Po zadeklarowaniu w teście Marcoosa zmiennej x w pętli for ("var x=1"), Opera przyśpiesza mi z 10000 na 4000, a Mozilla z 7000 na 1600. Hmm... Muszę poszukać, czemu tak się dzieje...