Каков наилучший способ проверить производительность моего PHP-кода?Тест производительности PHP-кода
ответ
Xdebug (см ответ Нила Эйткена) полезен для выявления бедных проблем производительности в PHP коде - но он может быть использован только при очень контролируемых и ограничительных условиях - не в последнюю очередь его трудно увидеть, какой эффект concurency имеет на представление.
Хотя, как указывает Патрик МАРИ, вы можете использовать ab - его не жизнеспособный подход, если транзакция, которую вы пытаетесь измерить, охватывает больше, чем страницу (например, войдите в приложение и создайте сеанс, добавьте случайный продукт в корзину, повторите добавить случайный продукт N раз ...).
AFAIK нет на PHP решения для записи/взаимодействия скриптов - но есть Perl + WWW: Mechanize + HTTP: recorder. Или, если вы очень богаты, вы можете купить продукт загрузки HP.
Но очень сложно реализовать тестирование, которое действительно представляет, как используется приложение, - и производительность приложения (по крайней мере, связанных с данным частями) будет меняться со временем - так что вам необходимо построить надлежащие показатели производительности в ваш код.
... и даже тогда время, затрачиваемое PHP на создание HTML-страницы, является лишь очень небольшой частью истории того, сколько времени требуется для отображения страницы в браузере.
НТН
C.
Очень красиво, трудно измерить, как ваше приложение может работать под большой нагрузкой. Вы можете использовать Selenium вместо Mechanize для автоматизации браузеров, но насколько я знаю, он не предназначен для тестирования нагрузки. –
Зачем упоминать hp loadrunner, но не apache jmeter? –
Вы можете использовать microtime(), чтобы избавиться от времени выполнения вашего кода. Вот основной фрагмент кода для этого:
$start_timestamp = microtime(true);
...
---your Code---
...
$end_timestamp = microtime(true);
$duration = $end_timestamp - $start_timestamp;
error_log("Execution took ".$duration." milliseconds.");
time() возвращает секунды, а не миллисекунды. Я считаю, что вы ищете что-то вроде [microtime()] (http://ca3.php.net/manual/en/function.microtime.php) –
Я всегда получаю отрицательные числа, делая это. Является ли моя программа быстрее самого времени? – Ray
@ Раймонд: вы, возможно, доказали возможность перемещения частиц быстрее света :) – Thariama
Вы должны рассмотреть возможность использования ab (apache benchmark tool) запускать большое количество запросов и xhprof в профиль/проанализировать код. На мой взгляд, это всего лишь основы, но дают отличные результаты.
xDebug имеет профилировщика встроенная, после настройки он будет сбрасывать некоторые файлы, которые вы можете прочитать с помощью программы, как KCacheGrind или WinCacheGrind
Это будет позволяют видеть все вызовы этой функции, средний и совокупный вызов времени и общего времени выполнения скрипта. Очень полезно для поиска узких мест в вашем коде.
Если вы хотите протестировать определенную часть кода, рассмотрите возможность использования пакета Benchmark из библиотеки PHP PEAR.
$timer = new Benchmark_Timer();
$timer->start();
// Code to test here
$timer->stop();
$timer->display();
Как новый взгляд на старую проблему, рассмотреть вопрос об использовании коммерческого инструмента, как NewRelic для оказания помощи в профилировании. Я лично просто использую их, чтобы получить небольшую выборку данных для бесплатной или номинальной цены. Тем не менее, я в полной мере использую их полнофункциональный пробный продукт.
Также вы можете использовать APD (Advanced PHP Debugger).
Это очень легко заставить работать.
Существует хороший учебник, как составить APD и сделать профилирование с ним: http://martinsikora.com/compiling-apd-for-php-54
- 1. тест производительности производительности Wordpress
- 2. Тест производительности
- 3. Тест производительности CUDA
- 4. Тест производительности триггера
- 5. Jmeter - Тест производительности
- 6. рельсы тест производительности неудовлетворительную
- 7. Тест количества/производительности
- 8. Тест производительности предсказания
- 9. Sqlite3 тест производительности вставки
- 10. Тест производительности для JavaScript
- 11. Тест производительности Cython
- 12. Тест сценария производительности Python?
- 13. Dataset декларация - тест производительности
- 14. Тест производительности типа float128?
- 15. Тест производительности производительности Cloudera Impala - пустой кеш
- 16. OWIN Katana vs Тест производительности производительности Node.js
- 17. Тест производительности OpenLayers vs Leaflet
- 18. Rails тест 3.0.12 Вопросы производительности
- 19. Тест производительности сервера Jmeter nginx
- 20. Тест производительности Kafka не доступен
- 21. Тест производительности Symfony2 Container/Kernel
- 22. Тест производительности приложений App Engine
- 23. iOS Тест на повышение производительности
- 24. Простой тест производительности, разные результаты
- 25. Тест производительности веб-службы Джерси
- 26. Автоматический тест регрессии производительности Runtime в Java
- 27. Как выполнить хороший сравнительный тест производительности?
- 28. тест производительности zeromq. Какова точная латентность?
- 29. Как выполнить модульный тест для относительной производительности?
- 30. UUID при выборе базы данных - тест производительности
Пожалуйста, укажите, если вы хотите, чтобы проверить блок PHP кода, блок кода, который использует базу данных или общую производительность вашего сайт под нагрузкой. Все три варианта использования имеют свои собственные инструменты, что отражено в ответах здесь. – chiborg
Вот [отличный ответ] (http://stackoverflow.com/a/1202746/4233593) –