Am postat si demo-ul temei pe youtube. Nu am reusit sa gasesc un host unde sa postez si website-ul facut in asp .net care sa nu aiba cerinte mari si sa imi verifice website-ul inainte sa postez. Si pe deasupra sa fie si gratis.
Demo-ul se paote gasi pe youtube la adresa aceasta.
Slideshare-ul care contine rezultatele si concluziile testului se poate gasi la adresa aceasta.
Va multumesc de atentie si o zi buna!
miercuri, 12 ianuarie 2011
sâmbătă, 8 ianuarie 2011
Rezultatele bechmark-urilor
In sfarsit am terminat de facut suita de teste de rulat testele pe cele 4 navigatoare web majore la ora actuala:chrome,firefox,safari si internet explorer.
Nu ma asteptam sa existe diferente asa de mari intre interpretoarele de pe navigatoare. Pe primele locuri au fost Chrome si Safari,urmate de Firefox si pe ultimul loc a fost Internet Explorer. Inca mai are mult de recuperat Internet explorer. In unele teste a rula extrem de incet fata de celelalte browsere iar nu suporta deloc tehnologii moderne.Inteleg ca in spate e o corporatie mare care deserveste un numar mare de clienti si ca schimbarile trebuie facute treptat si doar cand tehnologiile si-au dovedit utilitatea si s-au maturizat. Dar in cazul de fata,lucrurile sunt diferite.
Insa s-a descurcat mai bine decat m-am asteptat.Totusi ramane incet si personal nu as face aplicatii care necesita mai multa procesare in javascript.Testul 7,cel de simulated annealing si vectorizare cu algoritmi genetici demonstreaza cel mai bine lucrul asta. O aplicatie desktop care face cam acelasi lucru,a mers de 20 de ori mai repede cu un output de 4 ori mai mare care necesita mai mult timp pentru calcularea fitness-ului.Dar nu pentru asta a fost creat.
Si am mai gasit ceva interesant pe internet despre garbage collection. Orice limbaj care are garbage collection,dealoca si distruge automat obiectele. Si javascript are un asemenea garbage collector. In general ele pot fi considerate de 2 feluri: "generational" si "nongenerational".Cele "generational" sunt utile mai ales pentru aplicatii unde obiectele persista mai mult timp si se bazeaza pe algoritmi euristici,ideal pentru aplicatiile desktop care pot rula un timp indelungat dar cu utilitate mica pentru limbaje de scripting unde timpul de rulare este foarte mic in general.
Jscript,implementarea Microsoft pentru ECMAScript, in schimb utilizeaza un garbage collection "nongenerational"si "mark-and-sweep" gandit special pentru aplicatii cu durata de executie mica,cum ar fi javascript,jscript etc.
Inca nu sunt foarte sigur ca toate testele au rulat corespunzator pe fiecare browser. In Firefox nu am gasit erori facand debugging cu firebug dar nu stiu daca in celelalte browser-ere difera implementarea javascript care are putea cauza niste erori si erona total rezultatele. Mai ales in internet explorer,desi pe internet nu am gasit nimic legat de ce am facut eu.
Nu ma asteptam sa existe diferente asa de mari intre interpretoarele de pe navigatoare. Pe primele locuri au fost Chrome si Safari,urmate de Firefox si pe ultimul loc a fost Internet Explorer. Inca mai are mult de recuperat Internet explorer. In unele teste a rula extrem de incet fata de celelalte browsere iar nu suporta deloc tehnologii moderne.Inteleg ca in spate e o corporatie mare care deserveste un numar mare de clienti si ca schimbarile trebuie facute treptat si doar cand tehnologiile si-au dovedit utilitatea si s-au maturizat. Dar in cazul de fata,lucrurile sunt diferite.
Insa s-a descurcat mai bine decat m-am asteptat.Totusi ramane incet si personal nu as face aplicatii care necesita mai multa procesare in javascript.Testul 7,cel de simulated annealing si vectorizare cu algoritmi genetici demonstreaza cel mai bine lucrul asta. O aplicatie desktop care face cam acelasi lucru,a mers de 20 de ori mai repede cu un output de 4 ori mai mare care necesita mai mult timp pentru calcularea fitness-ului.Dar nu pentru asta a fost creat.
Si am mai gasit ceva interesant pe internet despre garbage collection. Orice limbaj care are garbage collection,dealoca si distruge automat obiectele. Si javascript are un asemenea garbage collector. In general ele pot fi considerate de 2 feluri: "generational" si "nongenerational".Cele "generational" sunt utile mai ales pentru aplicatii unde obiectele persista mai mult timp si se bazeaza pe algoritmi euristici,ideal pentru aplicatiile desktop care pot rula un timp indelungat dar cu utilitate mica pentru limbaje de scripting unde timpul de rulare este foarte mic in general.
Jscript,implementarea Microsoft pentru ECMAScript, in schimb utilizeaza un garbage collection "nongenerational"si "mark-and-sweep" gandit special pentru aplicatii cu durata de executie mica,cum ar fi javascript,jscript etc.
Inca nu sunt foarte sigur ca toate testele au rulat corespunzator pe fiecare browser. In Firefox nu am gasit erori facand debugging cu firebug dar nu stiu daca in celelalte browser-ere difera implementarea javascript care are putea cauza niste erori si erona total rezultatele. Mai ales in internet explorer,desi pe internet nu am gasit nimic legat de ce am facut eu.
vineri, 7 ianuarie 2011
Primele rezultate ale bechmarkului
Pana la urma am creat un mini website cu o suita de teste. Inca nu este finalizat dar dupa cateva rulari am constatat ca javascript este mai rapid decat ma asteptam.
La testul de aritmetica simpla,unde am calculat un factorial destul de mare,spre marea mea surpriza nu nicio diferenta de timp semnificativa intre 10 factorial si 100 factorial. Totul decurgea sub 1ms.Cel putin pe firefox. Insa am ramas surprins ca pentru 1000 factorial mi-a arata infinity in loc de valorea reala si dupa putin studiu, am aflat ca in javascript numerele sunt reprezentate ca decimal,numerele sunt pe 128 de biti cu virgula mobila iar eu depaseam cu mult valorea maxima reprezentabila si de aia imi arata infinity. In concluzie,operatiile cu numere implica foarte putin overhead iar intepretorul lucreaza cu ele la nivel low-level direct cu procesorul si poate chiar instructiuni dedicate fara a mai converti in alte ciudatenii gen stringuri si altele.
Am vrut totusi sa vad cat de bine lucreaza cu numere mari asa ca am descarcat o biblioteca care contine o clasa bignumber si abia atunci am reusit sa ingenunchez interpretorul unde a inceput sa mearga exponential mai incet. Deci creca ceea ce incetineste limbajul javascript cel mai mult este lucrul efectiv cu obiecte si tipuri precum si chestiile legate de programare functionala integrate in limbaj. Sincer,decat sa lucrez cu programare functionala,prefer oricand sa folosesc cea procedurala sau orientata obiect cum e ea implementata in java.Nu-mi plac limbajele prea functionale ca mi se par prea academice si merg mult prea incet pentru o aplicatie mai complexa.In plus si practic este foarte greu sa scrii mult cod intr-un limaj functional si sa il intretii.Iar in ultima vreme,in limbajele moderne au aparut chestii mult mai avansate,gen reflection,atribute sau generice(mai ales cele din .net) cu care poti face niste chestii cu adevarat interesante.
Dar pana la urma e totusi un limbaj interpretat si asta are cel ma greu cuvant de spus.
La testul de aritmetica simpla,unde am calculat un factorial destul de mare,spre marea mea surpriza nu nicio diferenta de timp semnificativa intre 10 factorial si 100 factorial. Totul decurgea sub 1ms.Cel putin pe firefox. Insa am ramas surprins ca pentru 1000 factorial mi-a arata infinity in loc de valorea reala si dupa putin studiu, am aflat ca in javascript numerele sunt reprezentate ca decimal,numerele sunt pe 128 de biti cu virgula mobila iar eu depaseam cu mult valorea maxima reprezentabila si de aia imi arata infinity. In concluzie,operatiile cu numere implica foarte putin overhead iar intepretorul lucreaza cu ele la nivel low-level direct cu procesorul si poate chiar instructiuni dedicate fara a mai converti in alte ciudatenii gen stringuri si altele.
Am vrut totusi sa vad cat de bine lucreaza cu numere mari asa ca am descarcat o biblioteca care contine o clasa bignumber si abia atunci am reusit sa ingenunchez interpretorul unde a inceput sa mearga exponential mai incet. Deci creca ceea ce incetineste limbajul javascript cel mai mult este lucrul efectiv cu obiecte si tipuri precum si chestiile legate de programare functionala integrate in limbaj. Sincer,decat sa lucrez cu programare functionala,prefer oricand sa folosesc cea procedurala sau orientata obiect cum e ea implementata in java.Nu-mi plac limbajele prea functionale ca mi se par prea academice si merg mult prea incet pentru o aplicatie mai complexa.In plus si practic este foarte greu sa scrii mult cod intr-un limaj functional si sa il intretii.Iar in ultima vreme,in limbajele moderne au aparut chestii mult mai avansate,gen reflection,atribute sau generice(mai ales cele din .net) cu care poti face niste chestii cu adevarat interesante.
Dar pana la urma e totusi un limbaj interpretat si asta are cel ma greu cuvant de spus.
Abonați-vă la:
Postări (Atom)