11.12.2011

JSLitmus

Original on http://www.broofa.com/Tools/JSLitmus/

JSLitmus е лек инструмент за създаване на Временна JavaScript бенчмарк тестове. Характеристиките включват…

  • Single-файл инсталирате ( JSLitmus.js )
  • Работи на Firefox, Opera, Safari, IE, Google Chrome, и iPhone браузъри
  • Адаптивни изпитателни цикли – тестове ~ 1-2 секунди, независимо от операцията
  • Google Chart + TinyURL интеграция
  • Open Source MIT лиценз за стил (виж източник)

Първи стъпки

тестове са лесни за създаване…

  1. Създаване на HTML файл, който включва JSLitmus.js
  2. Създайте си тестове с JSLitmus.test (test nametest function)
  3. Отваряне на HTML файл в браузъра и щракнете върху “Run Tests”

А тест може да бъде толкова просто като simple_test.html :

<script src="JSLitmus.js"> </ SCRIPT>
<script>
JSLitmus.test ('Empty function test', function() {});
</script>

Това е празен тест, а резултатите ще покажат ” Infinity” операции в секунда, която може да е или не може да се очаква. Ако ви се надявах да видя колко бързо празна функция може да се нарече, просто махнете отметката ” Normalized Results”. (Най-вероятно ще също така искам да прочетете раздела за ” Normalized Results”, по-долу.)

Но това е версия barebones неща. За да добиете представа от това, което изглежда като пълен тестов файл/апартамент, погледнете в demo_test.html (бъдете сигурни, за да видите източник на маркиране напълно е коментиран.) показва как да…

  1. Създаване на множество тестове в един файл
  2. Изпълнение на тестове или като примка или примка функции
  3. Добавяне на заглавие на тест, за да ви диаграма
  4. Създаване на тестов файл с валиден XHTML маркиране

Като за вграждане Widget

JSLitmus също могат да бъдат вградени в съществуващите уеб страници/приложения. Просто елемент с идентификатор = "jslitmus_container", и JSLitmus ще постави UI теста вътре в този елемент. (Уверете се, че елемент се определя преди изстрелването на onload събитие, обаче). Можете да видите изходния код на страницата за пример.

Тестване бързо операции

JSLitmus определя производителността на вашия код, като го извикате няколко пъти, докато достатъчно количество време е минало, за да получите валиден резултат. Това изисква итерация, разбира се. Но за бързи операции – операции, които могат да бъдат стартирани повече от ~ 100K/second или повече – над главата на итерация може да засенчи изпълнението на теста код. JSLitmus има две особености, които са насочени към този въпрос.

Нормализирано Резултати

JSLitmus има отметка “Normalize results“, че е активирана по подразбиране. С тази поддръжка, режийни итерация се изважда, когато табулиране на резултатите от теста.

Нормализиране може понякога да причини тест за показване на “∞” или ” Infinity” операции в секунда. Това се случва, ако тестът се справя, сравними с празни тестовете, използвани за калибриране на режийни контур итерация. Това също може да се случи, ако процесора беше зает с друг процес, когато JSLitmus се завтече калибриране тестове. (Тестовете се състои непосредствено преди първата на вашия тестове се управлява.)

Препредаване Функции

Най-простата форма на тест функция е примка функция като този:

JSLitmus.test ('a non-looping test', function() {
// код на Вашите тест отива тук
});

С този тип изпитване доставки итерация за вас и се позовава на функция от вътре, които по принципа на. Но това добавя режийни на допълнително извикване на функция на всяка итерация. За бързи операции, това го прави трудно да се определи колко дълго операция всъщност се, дори и с “нормализирано резултати”, включен. За да се смекчи този проблем, прилагане тест като примка функционални тестове като този:

JSLitmus.test ('a non-looping test', function(count) {
while (count--) {
// код на Вашите тест отива тук
}});

JSLitmus автоматично ще разпознае тази форма на функционален тест (защото то обявява аргумент “отброяване”) и преминават в брой итерация, необходими за изпитване. Това елиминира режийни функция повиквания на итерация, и произвежда по-точни резултати

Препредаване функции позволяват друга подобряване на постиженията, както добре. Те ви позволяват да декларират държава, която е местно, така и функционални тестове, но извън итерация, които могат да бъдат използвани, за да се облекчи натоварването на всеки глобален препратки променлива може да се наложи.

Адаптивни циклите на изпитване

JSLitmus адаптира итерация броят за всеки тест, така че това ще отнеме около 1 секунда, за да се изпълнява. Това става автоматично и подробности, как тя работи, не са толкова интересен. Но е важно да се отбележи, че като част от определяне броя итерация, ще призове тест функции, повече от веднъж, дори и за примка тест функции. Така че не забравяйте да се инициализира състояние на теста, така че теста функции се държат последователно всеки път, когато те се наричат.

Графики

JSLitmus произвежда графика, показваща относителното изпълнение на всички тестове, които се показват. Това се актуализира всяко време промени в данните от изпитванията. Ако вашият тестов файл има <TITLE> тагове, заглавието ще бъде включена в диаграма. JSLitmus също така да включва името и версията на браузъра, ако е открит.

Споделяне на класациите е лесно. Просто споделяне на диаграма URL/изображение, както бихте държали всеки друг образ в уеб страница. Но, тъй като URL диаграма може да стане доста дълъг и грозен, може да го намерите удобно да щракнете върху “получи TinyURL за диаграма”, за да получите по-компактна версия на URL адреса.

Връзка към този сайт

Вие сте добре дошли да си тестове свърже директно към JSLitmus.js на този сайт, но моля опитайте се да бъде внимателен. Ако очаквате да се генерира много (1000) на заявки/ден, моля домакин своя собствена версия на този файл.

Също така, да са наясно, че този сайт файлове за препратките информация. Ако имате линк към този сайт версия на скрипта, URL за вашата тестова страница ще бъдат записани в моите дневници.

Script Предупреждения в Internet Explorer

JSLitmus ограничава пъти за тест, така че на повечето браузъри (IE), вие няма да видите на страховитите “Script е твърде дълго “диалоговия. За съжаление на IE ситуацията е малко нелепо различни. Вместо да се ограничава по сценарий на времето, IE ограничава скрипт, за да 5M инструкции. Това работи добре през 1997 г., когато IE4 всички ярост и хардуер е по-бавен – скриптове ще се кандидатира за 5-10 секунди преди да удари тази граница, но с модерен хардуер CPU-интензивен скрипт като JSLitmus ще предизвика това в по-малко от 500ms.

Ако имате сравнително бърз система, можете да изпълнявате в тези диалогови прозорци в IE, като в този случай най-доброто решение е да модифицирате системния регистър на Windows, за да се увеличи броят на операциите (Имам мой набор до 50000000). Линка по-горе е описано как да направите това.

Comments are closed.