Develar
Новичок
CachegrindVisualizer 0.1
CachegrindVisualizer — это кроссплатформенная программа для визуализации файлов в формате Callgrind, в частности, его подмножества используемого Cachegrind. Профайлер Xdebug является совместимым с Cachegrind. Программа написана с использованием Apollo — под Linux Apollo будет в 2008 году, а Mac OS X поддерживает уже сейчас, но мака у меня нет (поэтому скомпилировать под него не могу), так что на данный момент только Windows XP SP 2 или Vista (не протестировано).
CachegrindVisualizer строит граф в формате DOT, который с помощью Graphviz можно преобразовать в 18 других форматов (VRML не поддерживается), в том числе, в SVG — самое вкусное. Сам CachegrindVisualizer не визуализирует формат DOT, для просмотра графа как изображения вам необходимо самостоятельно преобразовать его в нужный вам формат. Для удобства работы рекомендую использовать просмотровщик — ничего лучше чем ZGRViewer под Windows я не нашел (только не используйте его для экспорта — он не поддерживает русский язык, используйте dot, эта программа входит в состав Graphviz). ZGRViewer далеко не идеал, но ничего лучшего я не нашел, времени на реализацию своего идеального у меня в ближайший месяц не будет.
Скачать:
0) Apollo Runtime
1) CachegrindVisualizer
2) Graphviz
3) ZGRViewer
Построение графа происходит автоматически после анализа, изменения настроек или выделения ветки дерева, дата построения отображается в статусной строке, сам граф располагается там же, где и исходный файл профилирования, с тем же именем, но с раширением dot. Граф можно строить как для всей системы в целом, так и для любой из ее подсистем — выделением соответствующей ветки дерева.
Настроить, какой каталог содержит файлы профилирования для использования его по умолчанию в диалоге "Открыть", нельзя — каталогом по умолчанию считается тот, откуда в последний раз брался файл. Настройки построения графа можно сохранять и загружать.
Имя вкладки это имя анализируемого файла с удалением "cachegrind.out.". Управлять вкладками пока нельзя — в следующей версии.
При анализе осуществляется корректировка записей о деструкторах — xdebug пишет их так, как оно есть и как оно зависит от внутренних механизмов PHP — но обычному смертному PHP-программисту этих подробностей знать не надо и CachegrindVisualizer в независимости от того, как была завершена программа — сама или ей помогли (например, exit) или был ли присвоен инстанцированный класс какой-либо переменной, размещает эти записи в ветке main, и, таким образом, у вас всегда дерево, а не лес.
Скорость (Pentium D 2.8, 3 ГБ ОЗУ):
256 КБ. Анализ: 63 мс. Построение графа: 31 мс.
58,2 МБ. Анализ: 13 с. Построение графа: 30 мс.
Спасибо StUV за предоставленный всеобъемлющий тестовый файл и хорошее настроение от просмотра получившегося в итоге человечка.
Пара вопросов:
Нужен ли цветной граф, такой как в KCachegrind?
Нужна ли возможность открыть 10 100 МБ файлов профилирования и при этом иметь всего лишь 300 МБ занятой оперативной памяти, а не 3 ГБ?
Нужно ли помимо графа строить и диаграммы — использование файлов, рейтинги (это, скорее всего, и так будет когда-нибудь, так как оно нужно и мне самому)?
Вопросы и предложения в Issues на http://code.google.com/p/cachegrindvisualizer/issues/list.
TODO:
* Кеширование результатов анализа для файлов более 1 МБ
* Управление вкладками
Пиктограммы для токенов были взяты из шаблона phpDocumentor earthli и доработаны для прозрачности (разделять на ветка/лист не стал — рябит в глазах). В отличие от WinCacheGrind встроенные классы PHP я считаю не функцией, то есть php::blitz->blitz будет иметь пиктограмму конструктора, а php::blitz->set пиктограмму метода. Пиктограмма для программы в розыске
.
Кто работал во flex приложениях, учтите, что все использованные управляющие элементы доработаны для нормального использования: Tree и DataGrid знают о щелчке в пустом месте для снятия выделения; Tree, DataGrid и List поддерживают Ctrl + A; NumericStepper поддерживает колесо мыши и корректно устанавливает курсор ввода; TextInput поддерживает Ctrl + Z/Y.
Конвертация графа построенного в русской версии CachegrindVisualizer из PS в PDF стандартной программой dot невозможна из-из русских букв. Построение постраничного графа в данный момент не реализовано.
-~{}~ 11.06.07 13:06:
О, бог услышал молитвы и теперь можно материться в открытом баг-трекере Adobe. Вышла бета Apollo и теперь это кодовое имя изменено на Air. Надеюсь, оно не будет жрать 1,7 ГБ при загрузке 256 МБ файла. К вечеру будет CachegrindVisualizer 0.2 — должно работать шустрее и лучше.
>> Нужен ли цветной граф, такой как в KCachegrind
решил кодировать в HSV — не радуга, а HS в зависимости от time и callTime для стрелок.
-~{}~ 13.06.07 08:37:
http://code.google.com/p/cachegrindvisualizer/ 0.2
сжатие путем использования указателей - снижение объема занимаемой памяти (реализовал бы Derick Rethans Name Compression) и открытие файлов весом в несколько ГБ на выходных в 0.3
CachegrindVisualizer — это кроссплатформенная программа для визуализации файлов в формате Callgrind, в частности, его подмножества используемого Cachegrind. Профайлер Xdebug является совместимым с Cachegrind. Программа написана с использованием Apollo — под Linux Apollo будет в 2008 году, а Mac OS X поддерживает уже сейчас, но мака у меня нет (поэтому скомпилировать под него не могу), так что на данный момент только Windows XP SP 2 или Vista (не протестировано).
CachegrindVisualizer строит граф в формате DOT, который с помощью Graphviz можно преобразовать в 18 других форматов (VRML не поддерживается), в том числе, в SVG — самое вкусное. Сам CachegrindVisualizer не визуализирует формат DOT, для просмотра графа как изображения вам необходимо самостоятельно преобразовать его в нужный вам формат. Для удобства работы рекомендую использовать просмотровщик — ничего лучше чем ZGRViewer под Windows я не нашел (только не используйте его для экспорта — он не поддерживает русский язык, используйте dot, эта программа входит в состав Graphviz). ZGRViewer далеко не идеал, но ничего лучшего я не нашел, времени на реализацию своего идеального у меня в ближайший месяц не будет.
Скачать:
0) Apollo Runtime
1) CachegrindVisualizer
2) Graphviz
3) ZGRViewer
Построение графа происходит автоматически после анализа, изменения настроек или выделения ветки дерева, дата построения отображается в статусной строке, сам граф располагается там же, где и исходный файл профилирования, с тем же именем, но с раширением dot. Граф можно строить как для всей системы в целом, так и для любой из ее подсистем — выделением соответствующей ветки дерева.
Настроить, какой каталог содержит файлы профилирования для использования его по умолчанию в диалоге "Открыть", нельзя — каталогом по умолчанию считается тот, откуда в последний раз брался файл. Настройки построения графа можно сохранять и загружать.
Имя вкладки это имя анализируемого файла с удалением "cachegrind.out.". Управлять вкладками пока нельзя — в следующей версии.
При анализе осуществляется корректировка записей о деструкторах — xdebug пишет их так, как оно есть и как оно зависит от внутренних механизмов PHP — но обычному смертному PHP-программисту этих подробностей знать не надо и CachegrindVisualizer в независимости от того, как была завершена программа — сама или ей помогли (например, exit) или был ли присвоен инстанцированный класс какой-либо переменной, размещает эти записи в ветке main, и, таким образом, у вас всегда дерево, а не лес.
Скорость (Pentium D 2.8, 3 ГБ ОЗУ):
256 КБ. Анализ: 63 мс. Построение графа: 31 мс.
58,2 МБ. Анализ: 13 с. Построение графа: 30 мс.
Спасибо StUV за предоставленный всеобъемлющий тестовый файл и хорошее настроение от просмотра получившегося в итоге человечка.
Пара вопросов:
Нужен ли цветной граф, такой как в KCachegrind?
Нужна ли возможность открыть 10 100 МБ файлов профилирования и при этом иметь всего лишь 300 МБ занятой оперативной памяти, а не 3 ГБ?
Нужно ли помимо графа строить и диаграммы — использование файлов, рейтинги (это, скорее всего, и так будет когда-нибудь, так как оно нужно и мне самому)?
Вопросы и предложения в Issues на http://code.google.com/p/cachegrindvisualizer/issues/list.
TODO:
* Кеширование результатов анализа для файлов более 1 МБ
* Управление вкладками
Пиктограммы для токенов были взяты из шаблона phpDocumentor earthli и доработаны для прозрачности (разделять на ветка/лист не стал — рябит в глазах). В отличие от WinCacheGrind встроенные классы PHP я считаю не функцией, то есть php::blitz->blitz будет иметь пиктограмму конструктора, а php::blitz->set пиктограмму метода. Пиктограмма для программы в розыске

Кто работал во flex приложениях, учтите, что все использованные управляющие элементы доработаны для нормального использования: Tree и DataGrid знают о щелчке в пустом месте для снятия выделения; Tree, DataGrid и List поддерживают Ctrl + A; NumericStepper поддерживает колесо мыши и корректно устанавливает курсор ввода; TextInput поддерживает Ctrl + Z/Y.
Конвертация графа построенного в русской версии CachegrindVisualizer из PS в PDF стандартной программой dot невозможна из-из русских букв. Построение постраничного графа в данный момент не реализовано.
-~{}~ 11.06.07 13:06:
О, бог услышал молитвы и теперь можно материться в открытом баг-трекере Adobe. Вышла бета Apollo и теперь это кодовое имя изменено на Air. Надеюсь, оно не будет жрать 1,7 ГБ при загрузке 256 МБ файла. К вечеру будет CachegrindVisualizer 0.2 — должно работать шустрее и лучше.
>> Нужен ли цветной граф, такой как в KCachegrind
решил кодировать в HSV — не радуга, а HS в зависимости от time и callTime для стрелок.
-~{}~ 13.06.07 08:37:
http://code.google.com/p/cachegrindvisualizer/ 0.2
сжатие путем использования указателей - снижение объема занимаемой памяти (реализовал бы Derick Rethans Name Compression) и открытие файлов весом в несколько ГБ на выходных в 0.3