【问题标题】:is there any difference between echoing a line of output or closing the php tags and writing out the html code?回显一行输出或关闭 php 标签和写出 html 代码之间有什么区别吗?
【发布时间】:2009-06-02 10:38:54
【问题描述】:

我几乎可以肯定这个问题的答案是“根本没有!”但无论如何我都会问。如果您在 PHP 中有一条回显一行 html 的条件语句,那么这两个示例在性能方面是否存在差异:

<?php if ($output) { ?>
  <h2><?=$output;?></h2>
<?php } ?>

<?php if ($output) { echo "<h2>".$output."</h2>"; } ?>

【问题讨论】:

  • 尝试使用 Smarty 作为您的模板引擎!这是代码/设计分离的最佳选择之一。
  • 意见问题。自律是业务逻辑/接口分离的最佳选择。
  • @martin .... smarty 不是最好的模板引擎 ... php 是。另外,您不必学习新的 sintax 或为 smarty 制定变通方法,以便在 php 中轻松完成。作为一个证明,看看所有使用基于 php 的模板引擎的主要框架。

标签: php html


【解决方案1】:

我认为没有明显的性能差异。 我使用任何使我的代码更具可读性的变体。

【讨论】:

    【解决方案2】:

    从字面上看,答案是“根本没有”。考虑

    <span>
    <?php
      echo $myMessage;
    ?>
    </span>
    

    <?php
      echo "<span>\n";
      echo $myMessage;
      echo "</span>";
    ?>
    

    我从记忆中(几年前)开始,但那时 Zend 字节码编译器产生基本相同的输出; “literal” HTML 被编译成包含文本的 echo 语句。

    【讨论】:

      【解决方案3】:

      &lt;?= ?&gt; 标签无效,除非您启用了 short_open_tags,否则不建议这样做。

      【讨论】:

      • 是的,我应该写那行 代替。把它从一个旧网站上复制下来,上面有short_open_tag
      • +1 我同意,但是我还没有看到禁用它们的设置。
      【解决方案4】:

      如果你真的喜欢微优化,你应该从改变开始

      echo "<h2>".$output."</h2>";
      

      进入:

      echo '<h2>', $output, '</h2>';
      

      (无变量扩展,无字符串连接)

      【讨论】:

        【解决方案5】:

        为什么这么多 PHP 开发人员尝试优化这些东西?这与关于单引号和双引号字符串的辩论相同。如果这些性能差异在任何方面都很重要,那么您真的应该使用另一种语言。

        【讨论】:

        • 我没有优化代码,如果我这样做了,我会忽略这样的问题并专注于我编写的所有狡猾的 MySQL 语句:P。我只是想知道编译器是否更喜欢它们中的任何一个,因为我发现自己编写了这两种类型的语句。
        • @ewen ...我认为 PHP 是解释的,而不是编译的。
        • @orlandu:好的,改变措辞
        【解决方案6】:

        这叫微优化,不能依赖这样的性能差异

        但这比几纳秒的性能更好

        <?php if ($output) { ?>
          <h2><?=$output;?></h2>
        <?php } ?>
        

        【讨论】:

          【解决方案7】:

          性能可以忽略不计,在实践中不值得担心。第一个选项将是首选方法,因为它更具可读性并使用 php,因为它本来是要使用的(模板)。

          但从理论上讲,我猜第一种方法会更快,因为该语言需要解析的内容更少。直接返回html文本,不做处理。

          【讨论】:

            【解决方案8】:

            我更喜欢选项 1,因为它在大多数情况下更容易编辑 HTML - 特别是在处理具有内部内容的 div 时。

            这两种情况下的性能都可以忽略不计。

            【讨论】:

              【解决方案9】:

              为什么不直接测试一下呢?通过嗅探或查看您喜欢的浏览器中页面的源代码。

              【讨论】:

                【解决方案10】:

                我必须知道,所以在 10000 次迭代的循环中运行了几个不同的块。 经验教训:不要打扰。编写可读和可维护的代码。使用 MVC 模式... :)

                时间:2.66微秒

                <? if ($output) { ?>
                    <h2><?=$output;?></h2>
                <? } ?>
                

                时间:1.65微秒

                <? if ($output) { echo "<h2>$output</h2>"; } ?>
                

                时间:1.65微秒

                <? if ($output) { echo "<h2>".$output."</h2>"; } ?>
                

                时间:1.64微秒

                <? if ($output) { echo '<h2>'.$output.'</h2>'; } ?>
                

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 2015-04-03
                  • 2012-04-10
                  • 2015-02-22
                  • 2013-01-27
                  • 2017-04-15
                  • 2019-04-09
                  • 2021-06-28
                  • 2013-01-18
                  相关资源
                  最近更新 更多