Оптимизация конкатенации строк PHP

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

Вот я хочу поделиться с вами. Я собираюсь показать 4 примера, которые делают то же самое. Но только последний будет лучшим.

$foo = 'John SMITH'; echo "Hello $foo, welcome on my website."; echo "Hello " . $foo . " welcome on my website."; echo 'Hello ' . $foo . ' welcome on my website.'; echo 'Hello ', $foo , ' welcome on my website.'; 

Я уверен, что вы все знаете, что echo '$foo' не будет работать, но все же я уверен, что вы используете двойную кавычку для отображения простой информации. Это плохо .

Ну, давайте начнем: первый из них плох (а также второй), потому что использование двойной кавычки заставляет php сканировать строку, чтобы искать подстановку (я имею в виду переменную).

Второй – немного лучше, так как php не имеет замены.

Третий, лучше из-за простой цитаты, так что язык знает, что он может просто отправить текст без обработки, но «плохая» вещь – это использование конкатенации (оператор точки, как во втором примере).

Последний использует простую цитату и оператор комы. Почему это решение лучше?

Хорошо, что происходит при использовании третьего решения?

php создает строку, содержащую "Hello " , затем она должна ее увеличить, чтобы добавить содержимое переменной foo («John SMITH»), а затем снова увеличить ее, чтобы добавить " Welcome on my website." предложение. Тогда echo может использовать это, чтобы … эхо его 🙂

Принимая во внимание, что в 4-м, единственное, что нужно сделать для echo – это отправить «Hello», затем содержимое $ foo, затем «Добро пожаловать на мой сайт». к выходу, и это все! Поскольку эхо просто необходимо отправить текст, не создавая строку, которую нужно будет увеличить, чтобы содержать весь текст (который был бы вогнутым, который должен быть выращен (из-за конкатенации), а затем отображаться.

Я попытаюсь найти некоторые ориентиры и поместить их сюда.

Не стесняйтесь комментировать или реагировать, и извините мой английский, это не мой родной язык.

Совершенно неуместно, какое решение работает лучше. Компьютеры быстро растут, а циклы CPU дешевы, поэтому оптимизация в миллисекундах бессмысленна. Единственная реальная оптимизация – это то, что помогает быстрее читать код, поэтому вы можете сэкономить драгоценное время и сосредоточиться на фактическом предоставлении рабочего кода.

Создание небольшого (но все еще сосательного 🙂 теста и его выполнения дает следующие результаты:

 0.0022029876709 0.00211095809937 0.00213599205017 0.00551700592041 

Последний метод, безусловно, самый медленный.

Три правила оптимизации:

  1. Не оптимизируйте.
  2. Не оптимизируйте.
  3. Не оптимизируйте.

Сохраните его для LAST, что вы делаете, только после того, как узнаете, где замедление.

В противном случае вы, так сказать, поместите телегу перед лошадью.

На практике это почти всегда не будет вашим основным узким местом.

http://www.procata.com/blog/archives/2005/03/08/microbenchmarks-of-single-and-double-qouting/

Это не стоит. У вас может быть некоторое ускорение на 0,1% (не воспринимайте его буквально, незначительное ускорение) для всего вашего приложения, даже если вам удастся сделать конкатенацию строк быстрее на 30%. Большая часть времени будет потрачена на запросы БД или более сложную логику.