Если форматная строка содержит только плейсхолдеры %s, вызов sprintf() преобразуется в эквивалентную строковую интерполяцию. Это позволяет избежать накладных расходов на вызов функции и парсинг строки формата. Например, код:
private function key(string $type, int $identifier): string
{
return sprintf('last_ts_%s_%s', $type, $identifier);
}
преобразуется в:
private function key(string $type, int $identifier): string
{
return «last_ts_{$type}_{$identifier}»;
}
Поддержка плейсхолдера %d: Вскоре после первой оптимизации была добавлена поддержка плейсхолдера %d. Эти два плейсхолдера ( %s и %d) охватывают более 90% форматных строк, используемых в тестах Symfony Benchmark.
Влияние на производительность: Поскольку функция sprintf() широко используется в PHP коде (например, в кодовой базе Tideways она используется 616 раз), эта оптимизация улучшит общую производительность PHP.
Легкость использования: Оптимизация происходит автоматически во время компиляции скрипта PHP и не требует дополнительных действий со стороны разработчиков. Это также позволяет использовать sprintf() для более читаемого кода без ущерба для производительности.