PHP: скорость конкатенации
рассказ о том, как в PHP 7.4 завершилось одно долгое противостояние
Итак, со времени выхода восьмой версии PHP прошло уже несколько месяцев, и я успел завершить очередной проект, вобравший все прогрессивные изменения этого языка программирования. Мне особенно понравилась возможность объявления свойств в конструкторе (Constructor property promotion). Я считаю, что эта реализация действительно упростила инициализацию полей класса в конструкторе.
Но, также я успел заметить, что и в предыдущую версию PHP - 7.4 было внесено значительное количество важных изменений, о которых почему-то не принято говорить.
Насколько я помню, мой дебют в PHP соответствовал еще четвертой версии этого языка. И уже в те казалось бы далекие времена обсуждались некоторые моменты производительности написанного кода.
Так, в определенных кругах не теряло популярности обсуждение, что быстрее: одинарные кавычки с конкатенацией переменных или двойные кавычки с включенными в строку переменными.
$age = 25;
echo 'I am ' . $age . 'years old';
//or
echo "I am $age years old";
Конечно, при работе над современными приложениями такие обсуждения носят весьма прикладной характер и не оказывают фатального влияния на производительность проекта. Кроме того, в настоящее время большое значение имеет хорошая читабельность написанного кода.
Тем не менее в PHP 7.3 конкатенация и одинарные кавычки побеждали:
Можно увидеть, что 100 000 000 конкатенаций давали одинарным кавычкам преимущество в 2 секунды.
Но теперь с этим покончено.
PHP 7.4 сделал использование различных вариантов синтаксиса при объединении строк незначимым.
Наконец-то. Теперь мы можем заняться действительно важными задачами.
P.S.: Прошу обратить внимание на то, что данный пост имеет юмористический оттенок, и результаты, полученные на Вашем компьютере, могут отличаться от моих.
Спасибо за внимание.
Перевод статьи Jerzy Zawadzki “PHP 7.4 has silently ended The War…”.