Суббота, 28.12.2024, 12:41
Приветствую Вас Гость

Меню сайта
Web-программирование
Категории раздела
Наш опрос
Какой браузер Вы используете?
Всего ответов: 1423
Статистика

Анализ веб сайтов
Главная » Статьи » Статьи o JavaScript

Профайлеры в JavaScript
Date-таймеры

Зачастую, чтобы измерить время выполнения сценария, используется примитивный, но надежный метод создания Date-объектов.

// Запускаем таймер в начале выполнения сценария
var start = new Date();
// Код, время которого необходимо измерить
for (var 010000i++)
{
/* Do nothing */}
// Еще один таймер в конце
var end = new Date();
// Вычисляем разницу в ms
var result end.getTime() - start.getTime();
// Вывод результата
alert(result 'ms');

Этот способ хорош тем, что работает кроссбраузерно и довольно точно. Если между таймерами не размещать никакого кода, то мы увидим 0ms. Еще плюс, что Date-таймеры могут измерить время выполнения произвольного участка кода, а не только вызова функции.

Основные минусы связаны с отсутствием достоинств, которыми обладают профайлеры:

* Приходится каждый раз руками создавать Date-объекты, что не совсем удобно.
* Если мы пожелаем собрать статистику о времени исполнения, количестве вызовов и др. для всех функций, нам придется создать огромное количество таймеров и собирать данные с них всех, что совсем неудобно.

Простейший профайлер

Мы можем написать собственную простую реализацию функции-профайлера. В качестве первого аргумента она будет принимать ссылку на исполняемую функцию, а в качестве остальных - параметры вызова исполняемой функции. См. пример:

// Тестовая функция для выполнения
function forExecutelimit ) {
for (var 
0limiti++) {
/* Вызовем Math.random() */
Math.random();
}
}
// Profile-функция
function profilefn/*[, arguments]*/ ) {
var 
startendarg = [], i;
if ( 
arguments.length ) {
if ( 
arguments.length ) {
for (
1i

Заметим, что исполнение функции происходит в глобальном контексте объекта window, что может создать определенные проблемы при передаче ссылок на методы других объектов. Будьте внимательны и при необходимости измените контекст.

Использование Firebug

К сожалению не все браузеры оснащены инструментами web-разработки, настолько же мощными, как firebug. Для тех кто не в курсе, firebug — это дополнение для браузера Mozilla Firefox (далее FF), с таким количеством фич, что нет никакой возможности описать их в одной статье :-)

Итак, откроем FF, установим firebug, если его еще нет. Зайдем на главную страницу webew.ru и откроем firebug. Увидим примерно следующее:


Мы находимся во вкладке Console, и кнопка Profile не нажата. Теперь нажмем кнопку Profile, чтобы запустить профайлер и обновим страницу. После обновления, отожмем клавишу Profile, и если всё сделано правильно увидим в списке логов приблизительно такую таблицу:


Видим, что с начала загрузки страницы и до того времени как мы отжали кнопку Profile было 499 вызовов функций, общим временем выполнения 24.489ms. В таблице можно найти подробные данные о каждой функции: в каком файле находится, сколько раз вызывалась, время исполнения (min, max, avg) и прочее. Ткнув на имя функции можно посмотреть её исходный код.

Тем кто постоянно ведет разработку/отладку своих приложений в firebug, можно посоветовать использовать методы console.profile() и console.profileEnd() прямо в коде или в консоле фаербага.
Категория: Статьи o JavaScript | Добавил: Rammstein (05.05.2010)
Просмотров: 995 | Рейтинг: 5.0/1
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Реклама
Поиск
Друзья сайта
Топ100- Веб-дизайн free counters