В PHP, printf более эффективен, чем интерполяция переменных? - PullRequest
1 голос
/ 13 июля 2009

Я хочу знать, если код ниже:

<?php
printf ("%s", $some_variable);
?>

эффективнее, чем:

<?php
echo "$some_variable";
?>

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

<?php
echo $first_var, ' some string ', $second_var;
?>

Ответы [ 4 ]

5 голосов
/ 13 июля 2009

Аргумент между интерполяцией переменных, конкатенацией строк, передачей нескольких параметров и s? Printf, из-за отсутствия лучшего слова, глуп. Не беспокойтесь об этой тривиальной микрооптимизации, пока она не станет узким местом в памяти / скорости, которой она никогда не станет. Поэтому эффективно просто используйте все, что хотите, с учетом читабельности, различимости и простых предпочтений.

3 голосов
/ 13 июля 2009

Быстрый тест:

$ cat test-echo.php
<?
$i=10000000;
$some_variable = 'test';
while($i--){
 echo "$some_variable";
}
$ cat test-echo2.php
<?
$i=10000000;
$some_variable = 'test';
while($i--){
  echo $some_variable;
}
$ cat test-printf.php
<?
$i=10000000;
$some_variable = 'test';
while($i--){
  printf ("%s", $some_variable);
}

$ time php test-echo.php > /dev/null

real    0m16.099s
user    0m8.254s
sys     0m4.257s

$ time php test-echo2.php > /dev/null
real    0m15.122s
user    0m6.913s
sys     0m4.037s

$ time php test-printf.php > /dev/null
real    0m48.235s
user    0m30.643s
sys     0m11.614s

Так что printf значительно медленнее, чем простое эхо. эхо с переменной интерполяцией немного медленнее, чем простое эхо. Разница в незаметности, вероятно, из-за плохого теста.

1 голос
/ 13 июля 2009

Попробуйте проверить http://phpbench.com для сравнения всех придирчивых микрооптимизаций.

0 голосов
/ 13 июля 2009

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

?>
...
<?=$first_var?> some string <?=$second_var?>
 ...
<?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...