Скорость PHP - много Echos по сравнению с созданием строки

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

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

или

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

Спасибо за любой вход Вы имеете.

7
задан Chris 5 June 2010 в 21:10
поделиться

4 ответа

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

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

3
ответ дан 7 December 2019 в 07:40
поделиться

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

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

0
ответ дан 7 December 2019 в 07:40
поделиться

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

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

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

4
ответ дан 7 December 2019 в 07:40
поделиться

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

0
ответ дан 7 December 2019 в 07:40
поделиться
Другие вопросы по тегам:

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