Метрики производительности PHP - PullRequest
5 голосов
/ 18 апреля 2010

В настоящее время я разрабатываю PHP MVC Framework для личного проекта. Во время разработки фреймворка мне интересно увидеть какую-либо заметную производительность за счет реализации различных методов оптимизации. Я реализовал грубый класс BenchMark, который регистрирует mircotime.

Проблема в том, что у меня нет системы отсчета времени выполнения. Я очень близок к началу этого проекта с подключением к базе данных и несколькими запросами, но без вывода (за исключением некоторого текста отладки и журнала BenchMark). У меня есть текущее время выполнения 0.01917 seconds.

Я ожидал, что это будет ниже, но, как я уже говорил, у меня нет системы отсчета. Я ценю, что есть много переменных, которые нужно учитывать при настройке производительности, но я надеюсь найти какой-то показатель для
а) методы измерения производительности, например, запросов в секунду и
б) сравнить результаты, например; как будет работать PHP-приложение «умеренного» размера на «стандартном» веб-сервере. Я понимаю, что слова «умеренно» и «стандартный» являются очень субъективными словами, поэтому, возможно, таблица известных времен выполнения для конкретного приложения (например, время выполнения StackOverFlow).

Какие существуют другие методы измерения производительности, кроме времени выполнения?

Рассматривая Сравнение производительности MVC Framework , речь идет о запросах в секунду (RPS). Как это рассчитывается? Я предполагаю, что с моим текущим временем выполнения 0.01917 seconds может обработать 52 RPS (= 1 / 0.01917 ). Похоже, что это значительно ниже, чем указано на графике, особенно если учесть мою текущую ограниченную функциональность.

Ответы [ 2 ]

2 голосов
/ 18 апреля 2010

Для сравнения определенной страницы используйте ab . Чтобы проверить загрузку страниц на сервере, попробуйте siege .

Однако ... оба они в основном все еще являются искусственными испытаниями. Я тоже лично добавляю несколько дополнительных журналов.

  • Время загрузки страницы на веб-сервере (или прокси, как угодно)
  • Медленная регистрация запросов в базе данных
  • По возможности регистрируйте количество запросов на страницу, чтобы вы знали, насколько тяжелы ваши страницы;)
0 голосов
/ 18 апреля 2010

Вы можете использовать xdebug для профилирования вашего кода. Но вы слишком рано оптимизируете процесс разработки. Сам процесс вызова microtime замедляет процесс, поскольку он должен вызывать систему (вне механизма PHP). Каждое включение, создание объекта, соединение с другим ресурсом (то есть базой данных) добавят много накладных расходов, условно говоря.

Если вы разрабатываете свою систему так, чтобы она была очень удобна для кэширования, вам не нужно выполнять код. Например, WordPress работает очень медленно. Около 15 страниц в секунду на приличном веб-сервере. Он делает много включений и запускает много кода. Но добавьте плагин SuperCache и производительность увеличится в 10 раз. Он работает путем создания файла кэша и использования некоторых правил Apache, поэтому PHP вообще не нужно запускать.

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