Определение последствий для производительности PHP-кода

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

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
6
0
293
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Ответ принят как подходящий

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

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

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

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

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

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

Однако не зацикливайтесь на таких микрооптимизациях. Каждое веб-приложение PHP должно работать через кеш опкодов, что делает микрооптимизации излишними. Нагрузочное тестирование готового приложения намного лучше, потому что вы можете увидеть, на что на самом деле идет время, и сосредоточиться на нем.

Polsonby 24.09.2008 01:40

Я не так много думал об оптимизации типов "против". Больше об оптимизации дизайна и типов алгоритмов.

Gary Richardson 25.09.2008 03:08

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

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

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

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

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

Другие вопросы по теме