Производительность расширения переменных по сравнению с sprintf в PHP

Что касается производительности, есть ли разница между выполнением:

$message = "The request $request has $n errors";

и

$message = sprintf('The request %s has %d errors', $request, $n);

в PHP?

Я бы сказал, что вызов функции требует большего, но я не знаю, что PHP делает за сцены для раскрытия имен переменных.

Спасибо!

22
задан elitalon 22 August 2011 в 13:07
поделиться

1 ответ

Я удивлен, но для PHP 7.* "замена $variables" является самым быстрым подходом :

$message = "The request {$request} has {$n} errors";

можно просто доказать его сами:

$request = "XYZ";
$n = "0";
$mtime = microtime(true);
for ($i = 0; $i < 1000000; $i++) {
        $message = "The request {$request} has {$n} errors";
}
$ctime = microtime(true);
echo '

"variable $replacement timing": '.  ($ctime-$mtime);




$request = "XYZ";
$n = "0";
$mtime = microtime(true);
for ($i = 0; $i < 1000000; $i++) {
        $message = 'The request '.$request.' has '.$n.' errors';
}
$ctime = microtime(true);
echo '

"concatenation" . $timing: '.  ($ctime-$mtime);



$request = "XYZ";
$n = "0";
$mtime = microtime(true);
for ($i = 0; $i < 1000000; $i++) {
        $message = sprintf('The request %s has %d errors', $request, $n);
}
$ctime = microtime(true);
echo '

sprintf("%s", $timing): '.  ($ctime-$mtime);

результат для [1 119] PHP 7.3.5 :

"переменная синхронизация $replacement": 0.091434955596924

"конкатенация". $timing: 0.11175799369812

sprintf (" %s", $timing): 0.17482495307922

, Вероятно, Вы уже нашли рекомендации как 'использование sprintf вместо переменных содержавшимися в двойных кавычках, it’s о 10x быстрее'. , Каковы некоторые хорошие подсказки по производительности PHP?

я вижу, что это была истина, но однажды. А именно, перед PHP 5.2.*

Вот образец того, как это было в те дни PHP 5.1.6 :

"переменная синхронизация $replacement": 0.67681694030762

"конкатенация". $timing: 0.24738907814026

sprintf (" %s", $timing): 0.61580610275269

0
ответ дан 29 November 2019 в 03:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: