Профилирование кода в Symfony

Есть такая замечательная фишка Stopwatch. По сравнению со многими компонентами Симфони, которые нужно доставать через контейнер, инициализировать в каких-то конфигах и прочем, этот компонент самодостаточный и используется простым удобным способом: new Stopwatch. Волшебно! Хоть что-то приятное.

Как сообщается в первоисточнике, есть два способа установки этой штуки. Первый возможен и без самого Симфони:

Второй — использовать официальный репозиторий. Stopwatch есть в ядре фреймворка, можно оттуда её стащить.

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

 

Статистика выполнения кода, находящегося между началом и концом секции, попадёт в event, возвращаемый методом stop. Между прочим, start тоже возвращает этот эвент.

Можно вызывать start с двумя параметрами:

В таком случае, у эвента будет собственная категория. Можно объединять эвенты в категории по какому-нибудь признаку. Зачем? Разработчики приводят для примера собственное решение: Symfony Profiler (один из инструментов отладки фреймворка). В нём разные категории эвентов нужны чтобы по-разному их подсвечивать, когда отображается статитстика (например, все эвенты, профилирующие обращения к БД).

Перед тем, как рассмотреть уже наконец понятие «эвент», посмотрим ещё на одну фишку: периоды. Всё те же разработчики объясняют их на примере секундомера: кроме «вкл» и «выкл», секундомер может замерять время конкретного периода, не переставая считать секунды. Это нужно, чтобы подсчитать, какой круг за сколько времени пробежали бегуны, к примеру. Здесь то же самое:

Что из себя представляет эвент? Это объект класса StopwatchEvent с такими функциями:

После работы профайлера используйте эвент, полученный из stop, чтобы собрать всю статистику выполненного кода.

Напоследок: секции.

 

Зачем? Чтобы дозаписывать в секцию какие-либо эвенты и суммировать раздобытую информацию из разных эвентов для упрощения сбора статистики.

Спасибо, Symfony!


Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *