2009-06-27 1 views
2

Один из Googles Давайте сделаем интернет быстрее переговоры включали что-то об использовании эха с несколькими аргументами в PHP вместо использования конкатенации печати или строки.Повторение нескольких аргументов при выходе_буферизации на

echo 'The ball is ', $color; 

Вместо того, чтобы любой из этих

echo "The ball is $color"; 
echo 'The ball is ' . $color; 

Что делать, если буферизация вывода в игре?

В чем разница между использованием эха с несколькими аргументами и буферизацией вывода, а также с использованием альтернативных методов без буферизации вывода?

ответ

5

Обязательно прочтите PHP team's rebuttal из Google's performance tips.

В частности, он (Гвин Raskind) говорит:

4) "Не следует использовать конкатенацию с эхом"

Это точно противоположное правильному совету. Двигатель обрабатывает несколько аргументов для echo() таким образом, что конкатенация (или интерполяция строк с двумя кавычками) на самом деле намного быстрее. См. Таблицу , размещенную по адресу http://pastie.org/523020.

+0

И даже если вы добавите больше внимания к куче, конкат-версия будет намного быстрее. Я по-прежнему предпочитаю формат echo a, b, c (без уважительной причины, но привычка) – VolkerK

+0

+1 Хорошая ссылка. , – cletus

1

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

+0

Но если выходная буферизация была включена, не означает ли это, что первая версия сделает все, что делает более поздние версии, чтобы заполнить выходной буфер? – joebert

+1

Не совсем. С версией «... $ x ...» PHP сначала расширяет строки (т. Е. Создает новую строку), а затем передает ее для эха независимо от наличия выходного буфера или нет. Но все равно прочитайте ответ мерцатора. (Никогда не заменяйте тест производительности по предположениям ;-)) – VolkerK

Смежные вопросы