Что считается длительным временем исполнения? - PullRequest
17 голосов
/ 14 марта 2010

Я пытаюсь выяснить эффективность моего серверного кода.

Используя microtime(true) для измерения скорости, я могу рассчитать время, необходимое для запуска моего скрипта.

Я получаю среднюю скорость от .3 до .5 секунд. Эти сценарии выполняют ряд запросов к базе данных, возвращая пользователю различные значения.

Что считается эффективным временем выполнения для сценариев PHP, которые будут запускаться онлайн для веб-сайта?

Я знаю, что это зависит от того, что именно делается, но просто считаю, что это стандартный скрипт, который читает из базы данных и возвращает значения пользователю. Я смотрю на Google и вижу, что они ищут в интернете .15 секунды, и я чувствую, что мой сценарий - дерьмо.

Ответы [ 13 ]

8 голосов
/ 14 марта 2010

Время показа целевой страницы YouTube составляет <100 мс (<a href="https://www.youtube.com/watch?v=w5WVu624fY8" rel="nofollow noreferrer"> Видео здесь @ 7: 00).

Возможно, узким местом являются запросы к БД - попробуйте использовать

EXPLAIN select * from x...

чтобы узнать, можете ли вы добавить индексы, которые ускорят ваши запросы.

edit ссылка выше умерла. High Scalability сделали функцию на YouTube, которая использовала это видео в качестве основного источника, поэтому он может представлять определенный интерес: http://highscalability.com/youtube-architecture

3 голосов
/ 22 июля 2014

Мне кажется, немного высоко.

Для справки, мой фреймворк, который я создал, получает время выполнения, равное 0,0028, и 0,0340 секунды. В среднем на каждой странице обычно содержится от 11 до 18 запросов SQL.

Однако имейте в виду, что это высокооптимизированная среда, использующая преимущества кэширования, очень тщательного кодирования запросов и автозагрузки. Попробуйте применить эту тактику, и вы увидите значительное улучшение.

2 голосов
/ 15 марта 2010

Должно ли это быть быстрее и почему?

Если ответ «Да, потому что он находится в списке требований» или «Поскольку он требует ценных ресурсов сервера» , попытайтесь оптимизировать свои запросы SQL. Может быть, вам нужно добавить индекс (ы) ...

В противном случае, я думаю, вам следует перейти к следующему заданию. Во-первых, это работает, а во-вторых, вы говорите о .3 до .5 сек. который должен быть достаточно быстрым для людей и машин.

2 голосов
/ 14 марта 2010

Хм ... Я не уверен, что абсолютное значение здесь вполне справедливо. Это действительно зависит от аппаратного обеспечения ... Когда я работаю локально, моя машина-разработчик работает примерно в 5-10 раз медленнее, чем сервер Actuel. Поэтому, если мы примем абсолютное значение, «приемлемый» диапазон будет зависеть от аппаратного обеспечения.

Ну, в общем, я стараюсь держать вещи ниже 100 мс. Если время загрузки сервера выше, я буду отслеживать выполнение и попытаюсь выяснить, в чем дело. Я должен сказать, что большую часть времени узкие места связаны с базой данных (отсюда и запросы). Реальная работа над этим действительно важна.

2 голосов
/ 14 марта 2010

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

Чтобы быть щедрым, скажем, PHP занимает 20% от общего времени загрузки и отображения веб-страницы.
И опять же, я знаю, что этот процент очень приблизительный, но больше для наглядного примера.

Среднее время загрузки страницы составляет около 3 секунд. (что слишком много) Для полноценной загрузки веб-сайтов хорошего качества требуется около 1 секунды, поэтому PHP будет генерировать 200 мс (20% от 1 с) для генерации вывода. Таким образом, php может занять до 600 мс для «среднего» веб-сайта.

Примечание. Время выполнения PHP можно улучшить, изменив хостер или улучшив исходный код.

1 голос
/ 14 марта 2010

Я заметил, что, будучи редактором в Википедии, мы не видим жалоб, пока инициация загрузки страницы не превысит 5-10 секунд. Конечно, механизм сообщения о такой медлительности неясен для большинства пользователей.

Для себя, как пользователя веб-сайтов о путешествиях, меня адекватно устраивает промежуточный экран, на котором написано: «Получил ваш запрос. Сейчас он обрабатывается. Это может занять до X секунд».

1 голос
/ 14 марта 2010

Это все относительно, правда. Не ожидайте, что вы получите время наравне с другими сайтами, использующими PHP. Помните, PHP должен загружать все с нуля при каждой загрузке страницы.

Действительно, вы хотите увидеть, насколько хорошо работает ваш сайт под нагрузкой, например, с помощью Apache ab для его тестирования. Если ваш сайт может обрабатывать самый высокий уровень трафика, который вы можете ожидать, вам больше не нужно его оптимизировать. Пользователь не сможет определить, загружается ли ваша страница за 0,75 секунды или 0,25 секунды.

Помните, что вызов microtime сам по себе добавит время к загрузке вашей страницы, поскольку он должен вызывать операционную систему (переключение контекста). Может оказаться более полезным оптимизировать страницу, уменьшив ее, чтобы она быстрее проходила по сети и быстрее отображалась на клиенте.

1 голос
/ 14 марта 2010

Цель <200 мс. </p>

Люди все чаще начинают терять терпение из-за вещей, которые занимают> 200 мс

1 голос
/ 14 марта 2010

Зависит, как указано, но, кроме того, учтите следующее: со временем выполнения в одну секунду вы сможете (при идеальных условиях) обслуживать только один запрос в секунду на серверном компьютере с одним ЦП и там, где больше ничего нет происходит на этой машине. Если у вас поступает больше запросов, чем один раз в секунду, вы получите длинную очередь, и ваш сервер заработает, и входящие запросы будут обрабатываться еще дольше. Если вы получаете меньше запросов, вам все равно нужно обратить внимание на загрузку вашего процессора. Если сервер уже сильно загружен, возможно, у вас возникла проблема, требующая решения.

Существуют математические методы (теория очередей), которые можно использовать для анализа требований к емкости, см., Например, PDQ (http://www.perfdynamics.com/Tools/PDQ.html) для получения дополнительной информации.

Сравнение с Google, следовательно, может быть несправедливым, поскольку они должны иметь огромное количество входящих запросов, и при 3-кратном увеличении времени выполнения им потребуется в несколько раз больше серверов, чем у них уже есть ...

1 голос
/ 14 марта 2010

Я бы сказал, что в 10 раз меньше. Количество запросов не имеет значения, хотя. Их может быть 20, все бегут по 0,005 сек. Качество имеет значение, а не количество. Профилируйте свой код для определения наиболее медленных частей, добавив еще несколько операторов microtime, найдите самую медленную часть и затем оптимизируйте ее.

Если у вас есть собственная функция для запроса mysql, разместить микротайм будет очень удобно

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