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.

Niciun comentariu: