JSLitmus


Original: http://broofa.com/Tools/JSLitmus/
Copyright: broofa.com

JSLitmus to lekkie narzędzie do tworzenia doraźnych badań JavaScript Benchmark. Funkcje obejmują …

  • Pojedynczy plik instalacyjny (JSLitmus.js)
  • Działa na Firefox, Opera, Safari, IE, Google Chrome, i przeglądarki iPhone
  • Adaptacyjne cykli badania – testy miały ~ 1-2 sekundy, niezależnie od pracy
  • Google Chart + integracja TinyURL
  • Open Source MIT-style jazdy (patrz źródła)

Pierwsze kroki

Testy JSLitmus są łatwe do tworzenia …

Utwórz plik HTML zawierający JSLitmus.js
Tworzyć testy z JSLitmus.test (nazwa testu, funkcja test)
Otwórz plik HTML w przeglądarce i kliknij przycisk “Uruchom testy”

Badanie może być tak proste assimple_test.html:

“><script src=”JSLitmus.js”> </ script>
“><script>
JSLitmus.test (“Empty function test ‘, function () {});
“></ Script>

To jest pusty, a wyniki testu pokaże “Infinity” operacji na sekundę, co może lub nie może się spodziewać. Jeśli mieli nadzieję zobaczyć, jak szybko pusty funkcja może być wywołana, wystarczy odznaczyć “Normalizacja wyników”. (Prawdopodobnie będziesz także przeczytać rozdział “znormalizowany pomiar”, poniżej).

Ale to rzeczy barebones wersji. Aby zorientować się, co pełny plik testowy / suite wygląda, spójrz na demo_test.html (pamiętaj, aby wyświetlić źródło, aby zobaczyć w pełni skomentował znaczników.) To pokazuje, jak …

Konfigurowanie wielu testów w jednym pliku
Wdrożenie testów, ani niestandardowych funkcji lub pętli, pętli
Dodaj tytuł testy do wykresu
Tworzenie pliku testowego z ważnego XHTML

Jako niezabudowany Widget

JSLitmus może być również osadzone w istniejących stron internetowych / aplikacji. Wystarczy dostarczyć element z id = “jslitmus_container” i JSLitmus umieści testy UI wewnątrz tego elementu. (Upewnij się, że element jest zdefiniowany przed opalaniem zdarzenia onload, jednak). Możesz zobaczyć źródło tej strony na przykład.

Testowanie szybkich operacji

JSLitmus określa wydajność swojego kodu, poprzez uruchomienie go, aż wystarczającą ilością czasu minęło, aby uzyskać prawidłowy wynik. Wymaga to pętli iteracji Oczywiście. Ale dla szybkich operacji – operacje, które można uruchomić więcej niż 100K/second ~ lub więcej – napowietrznej z pętli iteracji może przysłonić wydajność kodu testowego. JSLitmus ma dwie cechy, które tę kwestię.
Wyniki znormalizowane

JSLitmus ma “znormalizować wyniki” pole wyboru, które jest włączone domyślnie. Ta jest włączona, overhead pętli iteracji jest odejmowana kiedy tabulacja wyniki testu.

Normalizacja może niekiedy powodować próba pokazania “∞” lub “nieskończoność” operacji na sekundę. Zjawisko to występuje, jeśli test ma skuteczność porównywalną do pustych testów używanych do kalibracji napowietrznych pętli iteracji. To może się zdarzyć, jeśli twój procesor był zajęty z innym procesem, gdy JSLitmus pobiegł to jest testów kalibracyjnych. (Testy odbywają się bezpośrednio przed pierwszym z twoich badań jest uruchomiony.)
Pętle Funkcje

Najprostszą formą funkcji testowej jest non-pętli funkcja tak:

JSLitmus.test (“non-looping test ‘, function () {
/ / Twój kod test idzie tutaj
});

Z tego typu JSLitmus TEST dostarcza pętli iteracji dla Ciebie i wywołuje swoją funkcję od wewnątrz tej pętli. Ale to dodaje narzut dodatkową wywołania funkcji w każdej iteracji. Dla szybkich operacji to sprawia, że ​​trudno jest określić, jak długo trwa operacja rzeczywiście, nawet w “znormalizowanej wyniki” włączone. Aby złagodzić ten problem, realizować swoje testy w pętli funkcji testowania jak to:

JSLitmus.test (“non-looping test ‘, function (count) {
while (count -) {
/ / Twój kod test idzie tutaj
}
});

JSLitmus automatycznie rozpozna tę formę funkcji testowej (bo deklaruje “count” argument) i przekazać w liczbie iteracji niezbędnych do testów. Eliminuje to per-iteracji Wywołanie funkcji i daje dokładniejsze wyniki

Funkcje zapętlanie umożliwić innym poprawy wydajności, jak również. Pozwalają one na stwierdzenie, państwo, które jest lokalne dla funkcji testowej, ale na zewnątrz pętli iteracji, które mogą być wykorzystywane w celu zmniejszenia narzutu jakichkolwiek odniesień zmiennych globalnych można mieć.
Adaptacyjne Cykle testowe

JSLitmus adaptuje licznik iteracji dla każdego testu tak, że będzie trwać około 1 sekundy do uruchomienia. Dzieje się to automatycznie i szczegóły jak to działa nie są tak interesujące. Jednak ważne jest, aby pamiętać, że w ramach ustalania licznik iteracji, JSLitmus wezwie swoje funkcje testowe więcej niż jeden raz, nawet do pętli funkcji testowych. Więc należy zainicjować stan badań, tak aby funkcje testowe zachowują się konsekwentnie za każdym razem są one nazywane.
Wykresy

JSLitmus produkuje wykres pokazujący względną wydajność wszystkich testów, które działają. Ta jest aktualizowana w każdej chwili zmiany danych testowych. tag, the title will be included in the chart.”>Jeżeli plik test ma <title>, tytuł zostanie uwzględnione w tabeli. JSLitmus będzie także zawierać nazwę i wersję przeglądarki, jeśli wykryty.

Udostępnianie wykresów jest proste. Wystarczy akcji wykres URL / obraz tak jak każdy inny obraz na stronie internetowej. Ale, ponieważ URL wykres można uzyskać bardzo długie i brzydkie, może się okazać, że wygodnie, aby kliknąć “GET TinyURL na wykresie” link, aby uzyskać bardziej kompaktową wersję URL.
Linki do tej strony

Zapraszamy, aby twoje testy link bezpośrednio do JSLitmus.js na tej stronie, ale postaraj się być taktowny. Jeśli spodziewasz się generować dużo (1000) wniosków / dzień należy udostępniać swoją wersję tego pliku.

Należy również pamiętać, że ta strona rejestruje informacje referrer. Jeśli link do tej witryny wersji skryptu, adres URL strony testowej zostanie zapisany w moich dziennikach.
Ostrzeżenia skryptów w przeglądarce Internet Explorer

Limity JSLitmus czasach badania tak, że w większości (nie-IE) przeglądarek nie są widoczne bał “skrypt trwa zbyt długo” dialog. Niestety na IE sytuacja jest nieco śmieszne inaczej. Zamiast ograniczać skrypt przez czas, IE ogranicza skrypt 5M instrukcji. To działało w porządku w 1997 roku, kiedy IE4 było wściekłość i sprzętu było wolniejsze – skrypty byłoby na 5-10 sekund przed uderzeniem ten limit – ale z nowoczesnego sprzętu obciąża procesora skrypt jak JSLitmus wywoła to w mniej niż 500ms.

Jeśli masz dość szybki system można uruchomić w tych oknach dialogowych w IE, w takim przypadku najlepszym rozwiązaniem jest modyfikacja rejestru systemu Windows, aby zwiększyć liczbę operacji (mam ustawione na 50000000 moje). Link powyżej opisano, jak to zrobić.

// <![CDATA[

JSLitmus.test (“Empty function test ‘, function () {});

To jest pusty, a wyniki testu pokaże “Infinity” operacji na sekundę, co może lub nie może się spodziewać. Jeśli mieli nadzieję zobaczyć, jak szybko pusty funkcja może być wywołana, wystarczy odznaczyć “Normalizacja wyników”. (Prawdopodobnie będziesz także przeczytać rozdział “znormalizowany pomiar”, poniżej).

Ale to rzeczy barebones wersji. Aby zorientować się, co pełny plik testowy / suite wygląda, spójrz na demo_test.html (pamiętaj, aby wyświetlić źródło, aby zobaczyć w pełni skomentował znaczników.) To pokazuje, jak …

Konfigurowanie wielu testów w jednym pliku
Wdrożenie testów, ani niestandardowych funkcji lub pętli, pętli
Dodaj tytuł testy do wykresu
Tworzenie pliku testowego z ważnego XHTML

Jako niezabudowany Widget

JSLitmus może być również osadzone w istniejących stron internetowych / aplikacji. Wystarczy dostarczyć element z id = “jslitmus_container” i JSLitmus umieści testy UI wewnątrz tego elementu. (Upewnij się, że element jest zdefiniowany przed opalaniem zdarzenia onload, jednak). Możesz zobaczyć źródło tej strony na przykład.

Testowanie szybkich operacji

JSLitmus określa wydajność swojego kodu, poprzez uruchomienie go, aż wystarczającą ilością czasu minęło, aby uzyskać prawidłowy wynik. Wymaga to pętli iteracji Oczywiście. Ale dla szybkich operacji – operacje, które można uruchomić więcej niż 100K/second ~ lub więcej – napowietrznej z pętli iteracji może przysłonić wydajność kodu testowego. JSLitmus ma dwie cechy, które tę kwestię.

Wyniki znormalizowane

JSLitmus ma “znormalizować wyniki” pole wyboru, które jest włączone domyślnie. Ta jest włączona, overhead pętli iteracji jest odejmowana kiedy tabulacja wyniki testu.

Normalizacja może niekiedy powodować próba pokazania “∞” lub “nieskończoność” operacji na sekundę. Zjawisko to występuje, jeśli test ma skuteczność porównywalną do pustych testów używanych do kalibracji napowietrznych pętli iteracji. To może się zdarzyć, jeśli twój procesor był zajęty z innym procesem, gdy JSLitmus pobiegł to jest testów kalibracyjnych. (Testy odbywają się bezpośrednio przed pierwszym z twoich badań jest uruchomiony.)
Pętle Funkcje

Najprostszą formą funkcji testowej jest non-pętli funkcja tak:

JSLitmus.test (“non-looping test ‘, function () {
/ / Twój kod test idzie tutaj
});

Z tego typu JSLitmus TEST dostarcza pętli iteracji dla Ciebie i wywołuje swoją funkcję od wewnątrz tej pętli. Ale to dodaje narzut dodatkową wywołania funkcji w każdej iteracji. Dla szybkich operacji to sprawia, że ​​trudno jest określić, jak długo trwa operacja rzeczywiście, nawet w “znormalizowanej wyniki” włączone. Aby złagodzić ten problem, realizować swoje testy w pętli funkcji testowania jak to:

JSLitmus.test (“non-looping test ‘, function (count) {
while (count -) {
/ / Twój kod test idzie tutaj
}
});

JSLitmus automatycznie rozpozna tę formę funkcji testowej (bo deklaruje “count” argument) i przekazać w liczbie iteracji niezbędnych do testów. Eliminuje to per-iteracji Wywołanie funkcji i daje dokładniejsze wyniki

Funkcje zapętlanie umożliwić innym poprawy wydajności, jak również. Pozwalają one na stwierdzenie, państwo, które jest lokalne dla funkcji testowej, ale na zewnątrz pętli iteracji, które mogą być wykorzystywane w celu zmniejszenia narzutu jakichkolwiek odniesień zmiennych globalnych można mieć.
Adaptacyjne Cykle testowe

JSLitmus adaptuje licznik iteracji dla każdego testu tak, że będzie trwać około 1 sekundy do uruchomienia. Dzieje się to automatycznie i szczegóły jak to działa nie są tak interesujące. Jednak ważne jest, aby pamiętać, że w ramach ustalania licznik iteracji, JSLitmus wezwie swoje funkcje testowe więcej niż jeden raz, nawet do pętli funkcji testowych. Więc należy zainicjować stan badań, tak aby funkcje testowe zachowują się konsekwentnie za każdym razem są one nazywane.
Wykresy

JSLitmus produkuje wykres pokazujący względną wydajność wszystkich testów, które działają. Ta jest aktualizowana w każdej chwili zmiany danych testowych. Jeżeli plik test ma , tytuł zostanie uwzględnione w tabeli. JSLitmus będzie także zawierać nazwę i wersję przeglądarki, jeśli wykryty.</p> <p>Udostępnianie wykresów jest proste. Wystarczy akcji wykres URL / obraz tak jak każdy inny obraz na stronie internetowej. Ale, ponieważ URL wykres można uzyskać bardzo długie i brzydkie, może się okazać, że wygodnie, aby kliknąć “GET TinyURL na wykresie” link, aby uzyskać bardziej kompaktową wersję URL.<br /> Linki do tej strony</p> <p>Zapraszamy, aby twoje testy link bezpośrednio do JSLitmus.js na tej stronie, ale postaraj się być taktowny. Jeśli spodziewasz się generować dużo (1000) wniosków / dzień należy udostępniać swoją wersję tego pliku.</p> <p>Należy również pamiętać, że ta strona rejestruje informacje referrer. Jeśli link do tej witryny wersji skryptu, adres URL strony testowej zostanie zapisany w moich dziennikach.<br /> Ostrzeżenia skryptów w przeglądarce Internet Explorer</p> <p>Limity JSLitmus czasach badania tak, że w większości (nie-IE) przeglądarek nie są widoczne bał “skrypt trwa zbyt długo” dialog. Niestety na IE sytuacja jest nieco śmieszne inaczej. Zamiast ograniczać skrypt przez czas, IE ogranicza skrypt 5M instrukcji. To działało w porządku w 1997 roku, kiedy IE4 było wściekłość i sprzętu było wolniejsze – skrypty byłoby na 5-10 sekund przed uderzeniem ten limit – ale z nowoczesnego sprzętu obciąża procesora skrypt jak JSLitmus wywoła to w mniej niż 500ms.</p> <p>Jeśli masz dość szybki system można uruchomić w tych oknach dialogowych w IE, w takim przypadku najlepszym rozwiązaniem jest modyfikacja rejestru systemu Windows, aby zwiększyć liczbę operacji (mam ustawione na 50000000 moje). Link powyżej opisano, jak to zrobić.<br /> // ]]></p>

Comments are closed.