Пишу, по большей части, про историю, свою жизнь и немного про программирование.

PHP: бесполезная микрооптимизация

Годы назад, когда многие увлекались микрооптимизациями ПХП, была среди них и такая — двойные кавычки заменяли на одинарные, первые были немного медленее. Причина вполне понятна — в строке, окружённой двойными кавычками, разрешена интерполяция — вставка переменных прямо в строку.

Выигрыш был мал, как по мне, но многим и этой разницы было достаточно.

И вот недавно мне кинули ссылку, где утверждается, что много лет назад ситуация поменялась — все виды кавычек обрабатываются с одинаковой скоростью. Я провёл замеры — так и есть, по ссылке не обманули. Я тогда подумал, что с введением в ПХП байт-кода, двойные кавычки в опкодах теперь просто не отличаются от одинарных, а интерполяция переделывается на объединение.

Сегодня проверил — примерно так оно и есть (ниже — опкоды ПХП):

line     #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   2     0  E >   ADD_STRING                                       ~0      'double+'
         1        ADD_VAR                                          ~0      ~0, !0
         2        ADD_STRING                                       ~0      ~0, '+quotes'
         3        ECHO                                                     ~0
   4     4      > RETURN

Нет никакой разницы какой вид кавычек использован (в моём примере — двойные с переменной посередине) — внутреннее представление не различается.

Вывод такой: можно спокойно использовать двойные кавычки везде, кроме мест, где вам важно экранирование — там можно использовать одинарные, если это удобнее.

Ctrl →Toki!