


Профилирующие методы FireUnit. Профилируем JavaScript. Технологии будущего. Оптимизация структуры веб-страниц
Как это все применять
Результаты
John Resig немного улучшил описанную ситуацию и добавил пару новых методов в FireUnit (http://fireunit.org/).
fireunit.getProfile();
Можно запустить этот код сразу после того, как вы использовали console.profile(); и console.profileEnd(); для перехвата проблемного участка кода — и получить полный вывод профилирующей информации. Например, если мы запустим это:

Рис. 6.1. Профилирование вызовов JavaScript, источник: ejohn.org
то получим из fireunit.getProfile() следующий объект JavaScript:
{
"time": 8.443,
"calls": 611,
"data":[
{
"name":"makeArray()",
"calls":1,
"percent":23.58,
"ownTime":1.991,
"time":1.991,
"avgTime":1.991,
"minTime":1.991,
"maxTime":1.991,
"fileName":"jquery.js (line 2059)"
},
// etc.
]}
fireunit.profile( fn );
Второй метод, добавленный в FireUnit, позволяет достаточно просто запускать и профилировать отдельные вызовы функций. Грубо говоря, этот метод запускает профайлер, исполняет функцию, останавливает профайлер, а затем возвращает результаты из getProfile(). Дополнительно он проверяет возможные исключения при вызове функции и гарантирует, что профайлер надежно выключен.
Это можно использовать примерно следующим образом:
fireunit.profile(function(){
document.getElementsByClassName("foo");
});