Конкатенация, несколько параметров или sprintf?

Я работаю над оптимизацией своего PHP-кода и выяснил, что вы можете ускорить эхо в этих направлениях – точно, вы можете заменить echo "The name of the user is $name" . "."; echo "The name of the user is $name" . "."; с:

  • echo 'The name of the user is '.$name.'.';
  • echo "The name of the user is", $name, ".";
  • echo sprintf("The name of the user is %s", $name);

Какой из них самый быстрый? Я бы хотел не только увидеть контрольные показатели, но и техническую разъяснительную работу, если это возможно.

Во-первых, это микро-оптимизация, и вы, вероятно, лучше платите за более быстрый сервер и разрабатываете больше продуктов, а затем тратите часы и часы на микро-оптимизацию. Однако, согласно http://micro-optimization.com/, вот результаты:

sprintf () медленнее, чем двойные кавычки на 138,68% (в 1,4 раза медленнее)

а также

sprintf () медленнее одиночных кавычек на 163,72% (в 1,6 раза медленнее)

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

Тем не менее, лучшие способы оптимизации строк – вывести их в список и затем объединить список. Взгляните на этот пост как на хорошую отправную точку.

Вариант с использованием sprintf() вполне уверен, что самый медленный из всех, поскольку вызовы функций в PHP довольно дороги, а sprintf() придется разбирать строку формата. Используя что-то вроде echo "abc ", $n, " xyz"; фактически компилируется на три одиночных ZEND_ECHO , что означает, что выходной уровень вызывается несколько раз, что может быть довольно медленным, в зависимости от используемого SAPI. Не имеет большого значения, используете ли вы echo "abc $n xyz"; или echo "abc " . $n . " xyz"; echo "abc " . $n . " xyz"; поскольку они оба скомпилируются в операции кокатинации.