Скорость PHP - много эха против построения строки - PullRequest
7 голосов
/ 06 июня 2010

Хотите знать, если кто-нибудь знает, будет ли какой-либо из этих методов производить вывод быстрее:

Method 1
for ($i=1;$i<99999;$i++) {
echo $i, '<br>';
}

или

Method 2
for ($i=1;$i<99999;$i++) {
$string .= $i . '<br>';
}
echo $string;

Спасибо за ваш вклад.

Ответы [ 4 ]

4 голосов
/ 06 июня 2010

Метод 1 Использует меньше памяти и процессора и работает «быстрее» (меньше нагрузки на сервер) Но скорее всего узким местом является скорость загрузки браузеров.

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

Ознакомьтесь с ответами на Оптимизация PHP или http://code.google.com/speed/articles/optimizing-php.html для получения дополнительных советов.

3 голосов
/ 06 июня 2010

Метод 1 кажется, что это будет быстрее.Метод 2 должен будет выдавать кучу CONCAT кодов операций для каждой итерации цикла, и очень длинная строка будет встроена в память, пока вы не будете готовы ее отправить.Метод 1, с другой стороны, будет состоять из двух ECHO кодов операций в цикле, и тогда PHP / ваш веб-сервер могут свободно пересылать контент клиенту до того, как вы полностью закончите, если он этого захочет.

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

0 голосов
/ 06 июня 2010

Если вы хотите микрооптимизировать, обратите внимание и на изменение $ i ++ на ++ $ i

0 голосов
/ 06 июня 2010

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

Во всяком случае, я думаю, что это в области микро-оптимизации. Разница, вероятно, измерима, но незначительна. Как прокомментировал @Coronatus выше, если бы ваше приложение было настолько чувствительно к производительности, вы бы не использовали PHP!

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