代码之家  ›  专栏  ›  技术社区  ›  James Mishra

在PHP中,printf比变量插值更有效吗?

  •  1
  • James Mishra  · 技术社区  · 17 年前

    我想知道以下代码是否正确:

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

    <?php
    echo "$some_variable";
    ?>
    

    变量插值的一个常见抱怨是它非常慢。我想知道是否有比变量插值更好的替代方案,不会让代码像这样混乱:

    <?php
    echo $first_var, ' some string ', $second_var;
    ?>
    
    4 回复  |  直到 17 年前
        1
  •  5
  •   moo    17 年前

    变量插值、字符串连接、多参数传递和s之间的争论?因为没有更好的词,printf是愚蠢的。不要担心这个微不足道的微优化,直到它成为内存/速度瓶颈,而它永远不会成为瓶颈。因此,有效地使用你想要的任何东西,考虑可读性、可辨别性和简单的偏好。

        2
  •  3
  •   niteria    17 年前

    快速测试:

    $ 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明显比简单的echo慢。 可变插值回声比简单回声慢一点。差异不明显,可能是因为测试用例不好。

        3
  •  1
  •   ryeguy    17 年前

    尝试退房 http://phpbench.com 以比较所有挑剔的微观优化。

        4
  •  0
  •   Craig    17 年前

    我不知道printf的效率有多高,但如果你正在寻找一种看起来不像回声那样混乱的解决方案,我建议你跳出php打印字符串,然后使用短标签打印变量。

    ?>
    ...
    <?=$first_var?> some string <?=$second_var?>
     ...
    <?
    
    推荐文章