PHP, değişken interpolasyon daha verimli printf?

4 Cevap php

Ben aşağıda kod bilmek istiyorum:

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

daha etkilidir:

<?php
echo "$some_variable";
?>

Değişken interpolasyon yaygın bir şikayet çok yavaş olmasıdır. Ben kişinin kod olarak dağınık yapmaz değişken interpolasyon için daha iyi bir alternatif olup olmadığını bilmek istiyorum:

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

4 Cevap

Değişken interpolasyon, string birleştirme, çoklu-parametre geçişi, ve s arasındaki argüman? Printf aptal daha iyi bir kelime, bir eksikliği vardır. O haline asla bellek / hız darboğaz, hale gelinceye kadar bu önemsiz mikro-optimizasyonu hakkında endişelenmeyin. Yani etkili sadece okunabilirlik, fark edilebilirlik ve düz tercih faktoring, ne isterseniz kullanabilirsiniz.

Hızlı testi:

$ 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

So printf significantly is slower than simple echo. echo with variable interpolation is a bit slower than simple echo. Difference in not noticable, probably because of poor test case.

Tüm nitpicky mikro optimizasyonlar bir karşılaştırma için http://phpbench.com kontrol etmeyi deneyin.

Ben printf nasıl verimli bilmiyorum, ama sen yankı gibi dağınık görünmüyor bir çözüm arıyorsanız, ben değişkenleri yazdırmak için kısa etiketleri kullanarak o dizeleri yazdırmak php dışarı kaçan öneriyoruz.

?>
...
<?=$first_var?> some string <?=$second_var?>
 ...
<?