Skip to content

Большие файлы cachegrind

17/03/2011

Сегодня пришлось столкнуться с необходимостью сделать профилирование для скрипта который исполнялся слишком долго. Для таких целей у меня стоит связка из XDebug + WinCacheGrind. XDebug отработал как положено, но файл cachegrind.out получился размером ~200 метров. WinCachegrind по каким то причинам каждый раз зависал, пытаясь его переварить (подозреваю что из за большого размера). В результате пришлось пойти другим путём.

Проблема решилась с помощью xdebugtoolkit и Graphviz. Graphviz и Python (необходимый для работы тулкита) у меня уже стояли. Оставалось скачать сам xdebugtoolkit. В него входит утилита cg2dot, преобразующая cachegrind-файл в граф вызовов (с указанием какой вызов сколько времени занял). Потом по получившимся данным утилита dot из graphviz просто строит график в формате PNG, на котором неплохо видно где же застревает PHP. Сам вызов выглядит примерно так:

cg2dot.py "D:\cachegrind\stage\cachegrind.out.16084" | "C:\Program Files\Graphviz2.24\bin\dot.exe" -Tpng -ograph.png

Я ввел эту команду и ушёл на час гулять. В результате получился файл graph.png по которому уже было понятно где и что работает медленно.

2 комментария
  1. Wicked permalink

    Я подписан на твой блог, а ты пишешь про мою тулзу🙂 Забавно.

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

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: