Pull to refresh

Инструменты для визуализации логов профайлера xdebug

Reading time2 min
Views22K
Наверное многие php разработчики используют профайлер xdebug для поиска узких мест в приложениях. Но просто смотреть логи очень не удобно, поэтому были созданы инструменты для их визуализации. Об этих инструментах я и хочу коротко рассказать.

Webgrind

Webgrind это набор php скриптов, которые можно установить на локальный или удаленный веб сервер. Дальше все просто до неприличия — закачиваем файл лога и смотрим статистику.
image
Самый очевидный плюс Webgrind'а это кроссплатформенность и простота установки.
Показывает список функций которые вызывались, количество вызовов (Invocation Count), общеё время потраченное на вызов (Total Self Cost) и общее время потраченное на выполнение (Total Inclusive Cost).
Можно скрыть php функции. Можно перейти внутрь функции, чтобы увидеть развернутую статистику.

KCachegrind

Для работы KCachegrind нужны библиотеки третьего KDE. Будет работать в большинстве Unix-подобных ОС (у меня точно работает в Ubuntu и FreeBSD), а также Windows (через Cygwin) и MacOS X (я не проверял). Это наверное самое функциональное и удобное средство для визуализации профайлов из всех доступных.

image
Видно вызовы функций, время, а также можно посмотреть граф вызовов (очень удобно) и карту (тоже иногда удобно).

WinCacheGrind.

WinCacheGrind это урезанный KCachegrind для Windows. Можно конечно попробовать запустить на виртуальной машине под другими ОС, но смысла не вижу. Из функционала доступен просмотр вызовов функций, также можно скрыть быстро выполняющиеся функции.

image

xdebugtoolkit

Если про вышеперечисленные инструменты вы наверняка знали, то про xdebugtoolkit с большой долей вероятности слышите впервые. Я сам про него узнал только несколько месяцев назад.
xdebugtoolkit позволяет визуализировать вот такие графы:

image

image
В общем если оо-о-чень не хочется тянуть в систему KDE либы для установки KCachegrind, то можно использовать xdebugtoolkit в связке с Webgrind.

MacCallGrind

Визуализатор для MacOS X. Я его не использовал (с MacOS X почти не работал). Выглядит вот так:

image
Внешне смахивает на WinCacheGrind. Судя по описанию функционал аналогичный.

CachegrindVisualizer

О ней мне буквально только что рассказал ftr. Это отечественная разработка хабраюзера Develar. Работает на Adobe AIR. Скриншот сильно большой, вот ссылка. И выдержка с описания:
CachegrindVisualizer строит более информативный граф, чем KCacheGrind — на острие ребра есть метка, набранная шрифтом меньшего размера, — это собственное время (self time) затраченное на выполнение этой функции, — собственное время выполнения именно этого вызова, а не всех вызовов данной функции.

Виглядит впечетляюще. Нужно будет попробовать использовать. Если кто-то уже работал — делитесь впечатлениями.

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

PS. Для того чтобы включить профайлер в xdebug нужно прописать «xdebug.profiler_enable = 1» в php.ini.

UPD. На Хабре есть перевод статьи о профилировании кода с помощью xdebug Profiling PHP Applications With xdebug. В ней более детально расписана работа с WinCacheGrind и KCachegrind.
Tags:
Hubs:
+37
Comments26

Articles