Наверное многие php разработчики используют профайлер xdebug для поиска узких мест в приложениях. Но просто смотреть логи очень не удобно, поэтому были созданы инструменты для их визуализации. Об этих инструментах я и хочу коротко рассказать.
Webgrind
Webgrind это набор php скриптов, которые можно установить на локальный или удаленный веб сервер. Дальше все просто до неприличия — закачиваем файл лога и смотрим статистику.
Самый очевидный плюс Webgrind'а это кроссплатформенность и простота установки.
Показывает список функций которые вызывались, количество вызовов (Invocation Count), общеё время потраченное на вызов (Total Self Cost) и общее время потраченное на выполнение (Total Inclusive Cost).
Можно скрыть php функции. Можно перейти внутрь функции, чтобы увидеть развернутую статистику.
KCachegrind
Для работы KCachegrind нужны библиотеки третьего KDE. Будет работать в большинстве Unix-подобных ОС (у меня точно работает в Ubuntu и FreeBSD), а также Windows (через Cygwin) и MacOS X (я не проверял). Это наверное самое функциональное и удобное средство для визуализации профайлов из всех доступных.
Видно вызовы функций, время, а также можно посмотреть граф вызовов (очень удобно) и карту (тоже иногда удобно).
WinCacheGrind.
WinCacheGrind это урезанный KCachegrind для Windows. Можно конечно попробовать запустить на виртуальной машине под другими ОС, но смысла не вижу. Из функционала доступен просмотр вызовов функций, также можно скрыть быстро выполняющиеся функции.
xdebugtoolkit
Если про вышеперечисленные инструменты вы наверняка знали, то про xdebugtoolkit с большой долей вероятности слышите впервые. Я сам про него узнал только несколько месяцев назад.
xdebugtoolkit позволяет визуализировать вот такие графы:
В общем если оо-о-чень не хочется тянуть в систему KDE либы для установки KCachegrind, то можно использовать xdebugtoolkit в связке с Webgrind.
MacCallGrind
Визуализатор для MacOS X. Я его не использовал (с MacOS X почти не работал). Выглядит вот так:
Внешне смахивает на WinCacheGrind. Судя по описанию функционал аналогичный.
CachegrindVisualizer
О ней мне буквально только что рассказал ftr. Это отечественная разработка хабраюзера Develar. Работает на Adobe AIR. Скриншот сильно большой, вот ссылка. И выдержка с описания:
Виглядит впечетляюще. Нужно будет попробовать использовать. Если кто-то уже работал — делитесь впечатлениями.
Послесловие
Как я и обещал описание короткое. С большинством из этих приложений я работал давно. Сейчас использую KCachegrind, как наиболее удобный и функциональный инструмент.
PS. Для того чтобы включить профайлер в xdebug нужно прописать «xdebug.profiler_enable = 1» в php.ini.
UPD. На Хабре есть перевод статьи о профилировании кода с помощью xdebug Profiling PHP Applications With xdebug. В ней более детально расписана работа с WinCacheGrind и KCachegrind.
Webgrind
Webgrind это набор php скриптов, которые можно установить на локальный или удаленный веб сервер. Дальше все просто до неприличия — закачиваем файл лога и смотрим статистику.
Самый очевидный плюс Webgrind'а это кроссплатформенность и простота установки.
Показывает список функций которые вызывались, количество вызовов (Invocation Count), общеё время потраченное на вызов (Total Self Cost) и общее время потраченное на выполнение (Total Inclusive Cost).
Можно скрыть php функции. Можно перейти внутрь функции, чтобы увидеть развернутую статистику.
KCachegrind
Для работы KCachegrind нужны библиотеки третьего KDE. Будет работать в большинстве Unix-подобных ОС (у меня точно работает в Ubuntu и FreeBSD), а также Windows (через Cygwin) и MacOS X (я не проверял). Это наверное самое функциональное и удобное средство для визуализации профайлов из всех доступных.
Видно вызовы функций, время, а также можно посмотреть граф вызовов (очень удобно) и карту (тоже иногда удобно).
WinCacheGrind.
WinCacheGrind это урезанный KCachegrind для Windows. Можно конечно попробовать запустить на виртуальной машине под другими ОС, но смысла не вижу. Из функционала доступен просмотр вызовов функций, также можно скрыть быстро выполняющиеся функции.
xdebugtoolkit
Если про вышеперечисленные инструменты вы наверняка знали, то про xdebugtoolkit с большой долей вероятности слышите впервые. Я сам про него узнал только несколько месяцев назад.
xdebugtoolkit позволяет визуализировать вот такие графы:
В общем если оо-о-чень не хочется тянуть в систему KDE либы для установки KCachegrind, то можно использовать xdebugtoolkit в связке с Webgrind.
MacCallGrind
Визуализатор для MacOS X. Я его не использовал (с MacOS X почти не работал). Выглядит вот так:
Внешне смахивает на 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.