Был проведен анализ производительности «переменное расширение против sprintf» здесь .
Как говорит @pekka, «делает ваш код максимально читабельным и поддерживаемым для вас и других». Если прирост производительности «низкий» (~ менее чем в два раза), игнорируйте его.
Подведение итогов теста : PHP оптимизирован для двойных кавычек и разрешений Heredoc. Проценты по отношению к среднему времени, к вычислению очень длинной строки с использованием только
- разрешение в двойных кавычках: 75%
- разрешение heredoc: 82%
- конкатенация в одинарных кавычках: 93%
- форматирование спринта: 117%
- форматирование sprintf с индексированными параметрами: 133%
Обратите внимание, что только sprintf выполняет некоторую задачу форматирования (см. Бенчмарк '% s% s% d% s% f% s'), и, как показывает @Darhazer, он вносит некоторые изменения в вывод. Лучшим тестом являются два теста: один сравнивает только время конкатенации (средство форматирования '% s'), другой - процесс форматирования & mdash; например, «% 3d% 2.2f» и функциональные эквиваленты перед расширением переменных в двойные кавычки ... И еще одна комбинация тестов, использующая короткие строки шаблона.
плюсы и минусы
Основным преимуществом sprintf
является, как показали тесты, очень дешевый форматер (!). Для общих шаблонов я предлагаю использовать функцию vsprintf .
Основными преимуществами в двойных кавычках (и heredoc) является некоторая производительность; и некоторая читаемость и ремонтопригодность номинальных заполнителей, которая увеличивается с количеством параметров (после 1) по сравнению с позиционными метками sprintf.
Использование индексированных заполнителей находится на полпути обслуживания с sprintf.
ПРИМЕЧАНИЕ: не использовать объединение в одинарные кавычки , только если это действительно необходимо. Помните, что PHP включает безопасный синтаксис, такой как "Hello {$user}_my_brother!"
, и ссылки, такие как "Hello {$this->name}!"
.