Как вы можете определить последствия для производительности вашего PHP-кода, если вы не знакомы с внутренними компонентами? Есть ли способы выяснить, как выполняется ваш код (помимо простого нагрузочного тестирования)? Я ищу такие вещи, как использование памяти, время выполнения алгоритмов.
Возможно, Джоэл сказал бы: «выучите C, а затем прочтите внутреннее устройство», но у меня действительно нет времени изучать C прямо сейчас (хотя я бы с удовольствием это сделал).






Используйте расширение Xdebug для профилирования кода PHP.
Если вы не знакомы с valgrind или подобным, то добавьте к ответу @Jordi Bunster ...
Если у вас есть профилирование в Xdebug, вы можете открыть файлы дампа профиля в KCacheGrind или WinCacheGrind, чтобы получить графическое представление о том, что занимает время в вашем коде.
К счастью, документация xdebug также подробно объясняет это, а также то, как интерпретировать результаты: http://xdebug.org/docs/profiler
Даже если вы знакомы с внутренним устройством, вам все равно следует провести нагрузочное тестирование своих предположений. Мне нравится использовать пакет Тест PEAR для сравнения другого кода.
Если вы можете изолировать свой код, вы можете упростить нагрузочное тестирование. Типичный метод - запускать каждую опцию несколько раз и смотреть, какая из них быстрее. Например, если у вас есть класс, вы можете написать тестовый пример, который проведет его через определенные шаги и прогонит его несколько раз.
Я не так много думал об оптимизации типов "против". Больше об оптимизации дизайна и типов алгоритмов.
Вы можете использовать низкоуровневый подход, такой как вставка вызовов microtime() и memory_get_usage() в код, или вы можете использовать одно из существующих решений для профилирования:
Как обычно, коммерческие инструменты имеют красивый графический интерфейс и красивые картинки, но стоят денег, бесплатные бесплатны, но вам, вероятно, придется потратить немного больше времени.
Кроме того, двоичный файл PHP CGI имеет тестовый режим с опцией -T, вы можете попробовать запустить php-cgi -T 100 yourscript.php, чтобы выполнить тест для бедняков.
См. SD PHP Profiler для инструмента, который может графически показать вам, где ваши PHP-приложения тратят свое время.
Однако не зацикливайтесь на таких микрооптимизациях. Каждое веб-приложение PHP должно работать через кеш опкодов, что делает микрооптимизации излишними. Нагрузочное тестирование готового приложения намного лучше, потому что вы можете увидеть, на что на самом деле идет время, и сосредоточиться на нем.