Определение последствий для производительности кода PHP - PullRequest
6 голосов
/ 09 сентября 2008

Как вы можете определить последствия для производительности вашего PHP-кода, если вы не знакомы с внутренними компонентами? Есть ли способы выяснить, как выполняется ваш код (помимо простого нагрузочного тестирования)? Я ищу такие вещи, как использование памяти, время выполнения алгоритмов.

Возможно, Джоэл сказал бы: «выучи C, затем читай внутренности», но у меня действительно нет времени, чтобы выучить C прямо сейчас (хотя я бы с удовольствием)

Ответы [ 5 ]

4 голосов
/ 09 сентября 2008

Используйте расширение Xdebug для профилирования кода PHP.

3 голосов
/ 09 сентября 2008

Если вы не знакомы с Вальгриндом или подобным, добавьте ответ @Jordi Bunster ...

Если у вас есть профилирование в Xdebug, вы можете открыть файлы профиля в KCacheGrind или WinCacheGrind, чтобы получить графическое представление о том, что занимает время в вашем коде.

К счастью, документация xdebug также объясняет это подробно, а также как интерпретировать результаты: http://xdebug.org/docs/profiler

0 голосов
/ 03 июля 2010

См. SD PHP Profiler для инструмента, который может графически показать вам, где ваши PHP-приложения тратят свое время.

0 голосов
/ 09 февраля 2010

Вы можете использовать низкоуровневый подход, такой как вставка вызовов microtime() и memory_get_usage() в код, или вы можете использовать одно из существующих решений для профилирования:

  1. Xdebug (бесплатно, с открытым исходным кодом)
  2. Zend Studio / Debugger профилирование (коммерческое)
  3. Трассировка кода Zend сервера (коммерческая)
  4. xhprof (бесплатно, с открытым исходным кодом)

Как обычно, коммерческие инструменты имеют приятный графический интерфейс и красивые картинки, но стоят денег, бесплатные - бесплатные, но вам, вероятно, придется потратить немного больше времени.

Кроме того, бинарный PHP CGI имеет режим тестирования с опцией -T, вы часто пытаетесь запустить php-cgi -T 100 yourscript.php, чтобы выполнить тест для бедного человека.

0 голосов
/ 10 сентября 2008

Даже если вы знакомы с внутренностями, вам все равно следует проверить свои предположения. Мне нравится использовать пакет PEAR Benchmark для сравнения другого кода.

Если вы можете изолировать свой код, вы можете сохранить нагрузочное тестирование простым. Типичный метод - запускать каждый параметр несколько раз и посмотреть, какой из них быстрее. Например, если у вас есть класс, вы можете написать тестовый пример, который проверит его и прогонит несколько раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...