Что считают долгим временем выполнения?

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

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

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

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

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

17
задан Stephen Watkins 27 August 2013 в 01:41
поделиться

11 ответов

Целевое время рендеринга страницы YouTube составляет < 100 мс (Видео здесь @7:00).

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

EXPLAIN select * from x...

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

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

8
ответ дан 30 November 2019 в 13:27
поделиться

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

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

2
ответ дан 30 November 2019 в 13:27
поделиться

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

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

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

{{1} }
1
ответ дан 30 November 2019 в 13:27
поделиться
  • Я бы не стал сравнивать ваш сценарий с Google, если вы не поддерживаете аналогичный ранжирование страниц ... и т. д.

  • Если поиск просто извлекает значения из базы данных, скорость можно немного улучшить, профилируя приложение и устраняя узкие места ( упомянуть несколько - сценарий на странице, большие изображения, большие таблицы, индексы базы данных)

0
ответ дан 30 November 2019 в 13:27
поделиться

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

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

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

2
ответ дан 30 November 2019 в 13:27
поделиться

Это, конечно, очень субъективно, зависит от сайта и т. Д. И т. Д.

Однако я бы сказал, что когда страница начинает занимать больше времени чем около 100 миллисекунд, это заметная задержка для пользователя и может быть «слишком длинной». Это если разумно ожидать, что эта страница загрузится мгновенно. Если страница является страницей поиска, выполняющей полнотекстовый поиск в большой базе данных, ситуация, конечно, иная.

1
ответ дан 30 November 2019 в 13:27
поделиться

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

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

.
1
ответ дан 30 November 2019 в 13:27
поделиться

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

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

.
1
ответ дан 30 November 2019 в 13:27
поделиться

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

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

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

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

2
ответ дан 30 November 2019 в 13:27
поделиться

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

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

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

1
ответ дан 30 November 2019 в 13:27
поделиться

Стремитесь к < 200 мс.

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

1
ответ дан 30 November 2019 в 13:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: