czwartek, 17 kwietnia 2008

Benchmarki

Wszedłem sobie na portugalskojęzyczną stronę z wynikami testów jak ktoś próbował pokazać jak wydajny jest Tamarin. Trudno mi było uwierzyć, że ActionScript 3 jest szybszy od Pythona. Sam postanowiłem sprawdzić jak to z tym jest? Faktycznie, jak używamy silnego typowania i buforowania łańcuchów danych to się okazuje że nawet wydajnościowo dorównuje C/C++

Najdziwniejszy okazał się silnik skryptowy w Windows, bo nie mogłem zrozumieć dlaczego IE 7 wywala się. Jak użyłem WHScript to się przeraziłem. Poniższy skrypt został wykonany po 10290 ms.


function test() {
var s = "";
var e = 0.0;
var f = 1.0;
for(var i = 1; i <= 10000; i++) {
s += "teste";
e += 1.0/f;
f *= i;
}
return e
}
start = new Date();
test();
end = new Date();
addTime = end-start;
WScript.Echo(addTime + " ms.");


W IE7 taki test powodował pad przeglądarki. Nie zrażony tym chciałem zobaczyć jak JavaScript 2 w IE 7 wykona taki skrypt:


IE7 z JavaScript2 wykonał to w ciągu 375 ms. Opera wykonała to w 203 ms. a Firefox 2 w ciągu 855 ms.

Zastanawiam się czy może być szybciej? Owszem. Wyobrażcie sobie taką przeglądarkę w której mógłbym napisać taki kod



W tym przypadku dochodzi czas na wewnwtrzna kompilację do bajtkodu w pamięci i jego wykonanie. W ten sposób mielibyśmy jedną najszybszych przeglądarek. Coś jeszcze?
Zamiast kazać przeglądarce dokonywać kompilacji wystarczy samo załadowanie bajtkodu.

Wystarczyłoby dodać taka linijkę kodu w dokumencie HTML


Bajtkod jest wyjątkowo wydajny. Zajmuje bardzo mało miejsca. Kod źródłowy w AS3 zajmował mi 578 bajtów to po kompilacji do bajtkodu tylko 291 bajtów. A to jeszcze można poddać kompresji do formatu SWF.

Coś mi się wydaje że trzeba napisać taką przeglądarkę na bazie silnika Flash Playera i wspieraną przez Adobe AIR niż czekać aż upowszechni się JavaScript2.

W praktyce mamy już takie biblioteki jak AS3 Eval czy swfassist
Z tej pierwszej można by zrobić konwersję kodu do bajtkodu, a z tej drugiej ładowanie bajtkodu z plików SWF do aplikacji. A cała koncepcja tkwi w napisaniu odpowiedniego plugina do htmlwrappera

2 komentarze:

Detektyw2003 pisze...

Gdzie masz te szablony . Piszesz o szablonach a masz taki standardwy.

Potrzebuje zlikwidować marginesy na blogspot. Widziałem blogu na blogspot ktore mają trzy kolumny.

Moze bys cos napisal dla mnie zeby udowodnic ze potrafisz.

Michał Małaj pisze...

Gdzie pisałem o szablonach? W sierpniu 2006 roku, a ta koncepcja dotyczyła pewnej idei przesyłania danych ze strony WWW do pliku SWF.

A likwidacja marginesów na blogspot.com to kwestia znajomości styli CSS.