2009-07-20 10 views
5

background:JavaScript Performance Evaluation

Rozglądałem się za punkt odniesienia, lub ewentualnie narzędzie, które pomaga teoretycznie ocenić sprawność (koszt zasobu) swojego JavaScript. W tym wyszukiwaniu pojawiło się wiele doskonałych programów do debugowania, ale nie mogę znaleźć czegoś, co pomogłoby mi zoptymalizować kod, wykorzystując metody mniej zasobochłonne.

pytanie:

Czy istnieje zasób (online przewodnik, lista, baza danych, książka, cokolwiek) lub być może niektóre programy (web-based, wtyczki do przeglądarki, rozbudowa IDE), które pomogą Ci zoptymalizować JavaScript?

przykład:

innerText w IE/textContent Firefox wymaga znacznie mniej zasobów niż innerHTML w każdej przeglądarce.

To jeden rodzaj zdrowego rozsądku, ponieważ jest mniej potężny, ale istnieją inne porównania, o których słyszę na co dzień i nie mogę naprawdę zweryfikować, czy są one faktycznie lepsze dla zoptymalizowanego kodu lub bardziej wydajne, a nawet gdybym mógł, nie miałbym możliwości przetestowania tego!

Wszelkie pomysły?

+0

Dzięki za wszystkie odpowiedzi! Skończę użyciu tych przetestować wszystko, ale I” Zgaduję, że zamiast używać przewodnika, aby pokazać, czego "powinieneś" i "nie powinieneś" używać, po prostu używaj prób i błędów w tandemie z tymi testami, aby ustalić najlepsze praktyki dla twoich własnych przypadków użycia Zrobi to. – NateDSaint

+0

Nie jestem pewien dlaczego to zostało zamknięte – NateDSaint

Odpowiedz

6

zwykły sposób ocenić JavaScript jest poprzez ocenę ilości czasu potrzebnego do zestawu kodu do wykonania:

var begin = new Date().getTime(); 
//do stuff 
console.debug(new Date().getTime() - begin); 

Jednakże istnieją pewne problemy z tym w IE. jeśli uruchomienie skryptu trwa < 15ms, wynik IE zwraca 0ms.

Różne biblioteki javascript mają ramy testowe, które pomagają ocenić szybkość kodu. Struktura testowa Dojo nazywa się DOH.

John Resig stworzył również plugin firebug o nazwie FireUnit, który pozwala łatwo ocenić czas potrzebny na wykonanie funkcji, a przy niewielkiej konfiguracji wyprowadza również Big O funkcji, która jest świetnym elementem dane.

Wyjazd wideo Resig jest od JSConf na testowanie wydajności JS:

Measuring Javascript Performance - John Resig

FireUnit rundown

+2

jsyk, na laptopach, rozdzielczość zegara IE9 zależy od aktualnego planu zasilania komputera.Jeżeli działa na baterii to rozdzielczość wynosi ~ 16ms, ale jeśli jest naładowana, to jest znacznie lepsza. przeprowadzić test na bardzo dużej liczbie iteracji, więc sam test prawdopodobnie potrwa kilka sekund i dzielą się przez liczbę iteracji. To sprawia, że ​​rozdzielczość zegara ma niewielką różnicę. –

3

Zawsze lubiłem proste podejście z Firebug:

console.time("timer-name"); 

i

console.timeEnd("timer-name"); 

Dobry do pomiarów poziomu ziarnistego.

1

Narzędzie "profil" Firebug doskonale nadaje się do mierzenia wydajności javascript. Pokazuje wszystkie wąskie gardła w twoim kodzie w funkcji według podziału funkcji, pokazując, który z nich miał najwyższy średni czas, większość połączeń itp.

8

W tej samej linii co strife25, firebug ma bardzo poręczną metodę pomiaru czasu bez obsługi jakichkolwiek dat. Po prostu użyj:

console.time("Your timer name"); 
//Execute some javascript 
console.timeEnd("Your timer name"); 

Następnie sprawdź konsolę. alt text http://aquate.us/u/62232567893647972047.jpg

Edytuj - wyłączenie o 30 nieparzystych sekund. :(

+1

Sympatia +1 :) –

1

Profiler w IE8 jest niesamowite. To daje widok drzewa wraz z czasem włącznie (w ms)