«Профилировщик с визуализацией» для PHP с «полной визуализацией обратной трассировки»? - PullRequest
6 голосов
/ 11 января 2012

В настоящее время я использую xdebug profiler & KCacheGrind. Но формат GallGrind не хранит полную трассировку вызовов, только трассировки родительских дочерних вызовов (посмотрите на Kcachegrind / callgrind неточен для функций диспетчера? , о чем я говорю.)

Существует ли профилировщик с визуализацией с полной визуализацией обратного следа , доступный для PHP?

Я смотрел на

  • PHP Quick Profiler : Но требуется слишком много кода для добавления и никакой визуализации.
  • phpCallGraph : его последняя версия была изменена 2009-08-06 ( ref ) .

Ответы [ 2 ]

3 голосов
/ 11 января 2012

Несколько месяцев назад мне пришлось выполнить несколько основных профилей PHP для предыдущего проекта.

Лучший вариант, который мне удалось найти, был xhprof в Facebook с xhprof-ui .

Прочтите о том, как установить их оба здесь:

http://blog.preinheimer.com/index.php?/archives/355-A-GUI-for-XHProf.html

Некоторые плюсы:

  • простой в использовании интерфейс
  • Бэкэнд базы данных для сохранения предыдущего сеанса профилирования
  • хороших позывных
1 голос
/ 11 января 2012

Если вы просто хотите посмотреть на вывод профилировщика, это одно.Если вы пытаетесь оптимизировать свой код, не забудьте об этом методе .Я знаю, что вы можете сделать это в xdebug.

Он основан на очень простой идее.Предположим, ваша программа делает больше, чем нужно, чтобы ее можно было ускорить.На самом деле, предположим, ради аргумента, что он делает в 9 раз больше, чем нужно, так что в целом, если предполагалось, что это займет 1 секунду, это на самом деле занимает 10. Эти 9 секунд ненужной работы могут или не могут быть тщательно перемешаны, например:сахар и мука.

Хорошо, в течение этих 10 секунд вы просто нажимаете ^ C, чтобы остановить его, а затем внимательно смотрите, чтобы увидеть, что он делал в этот момент.

Что такоевероятность того, что вы поймали это на расточительстве?На самом деле, очень маловероятно, что вы не поймали его на бесполезной работе.

Если вы не уверены, просто повторите.

Потери не имеютбыть таким большим.Фактически, если вы продолжите делать паузу таким образом, как только вы заметите, что она делает что-то по более чем одному случаю, если это то, от чего вы могли бы избавиться, вы получите хорошее ускорение, гарантированное.

Например, если вы сделаете паузу 5 раз и увидите, что она делает что-то, чего на самом деле не нужно делать в 2 случаях, сколько вы можете сэкономить?Вы точно не знаете, , но это будет где-то около 40%.Это может быть всего 20%.Это может быть так же легко, как 60%.Таким образом, вы не знаете, сколько он сэкономит, но вы не выбрасываете золотой самородок только потому, что не уверены, сколько он весит.

Наконец, нет проблем, которые может найти профилировщик.что этого не будет.Обратное неверно.

...