为了账号安全,请及时绑定邮箱和手机立即绑定

打开/关闭标签和性能?

/ 猿问

打开/关闭标签和性能?

这可能是一个愚蠢的问题,但是作为PHP的新手,我想知道在HTML模板代码中频繁打开和关闭PHP标签是否存在任何与性能相关的问题,如果是,那么最佳实践是什么使用PHP标签?


我的问题不是关闭标签的重要性/正确性,或者不是哪种类型的代码比另一种更具可读性,而是关于文档的解析/执行方式及其对性能的影响。


为了说明,请考虑以下两个极端:


混合使用PHP和HTML标签:


<?php echo

   '<tr>

       <td>'.$variable1.'</td>

       <td>'.$variable2.'</td>

       <td>'.$variable3.'</td>

       <td>'.$variable4.'</td>

       <td>'.$variable5.'</td>

   </tr>'

?>

// PHP tag opened once

分离PHP和HTML标签:


<tr>

   <td><?php echo $variable1 ?></td>

   <td><?php echo $variable2 ?></td>

   <td><?php echo $variable3 ?></td>

   <td><?php echo $variable4 ?></td>

   <td><?php echo $variable5 ?></td>

</tr>

// PHP tag opened five times

即使只是听说它没有区别,也有兴趣听取一些对此的看法。


谢谢。


查看完整描述

3 回答

?
绝地无双

为您准备正确的3条简单规则:

  • 没有语法问题可以影响性能。数据操作确实如此。

  • 说到性能,仅以分析结果为后盾。

  • 过早的优化是万恶之源

性能问题很难理解。建议新手不要考虑它。因为他们总是对琐碎的事情印象深刻,却看不到真正重要的事情。只是因为缺乏经验。

您的问题也一样。想象一下,您将永远有所不同。例如,即使是一个大方法,其速度也要快2倍。哦,我的2次!我选择它并优化了我的应用程序,它现在运行速度提高了50%!

错了。不是50%。您永远不会注意到甚至无法衡量这种速度的提高。因为您优化了仅占整个脚本运行时的0,0001%的部分。

对于大型HTML表格,浏览器需要很长时间才能呈现它。比您生成的要多得多。

性能分析是性能界的一个关键词。毫无疑问,如果其中没有“概要分析”一词,就可以毫无疑问地丢弃任何与性能相关的问题。同时,剖析不是一门火箭科学。我只是在评估脚本不同部分的运行时间。可以使用诸如xdebug之类的探查器来完成,甚至可以使用手动完成microtime(1)。而且只有在检测到最慢的部分之后,您才能开始测试。

在询问性能问题之前,先学习简介。如果没有真正的原因,请学习不要问性能问题。

过早的优化是所有罪恶的根源 - D.Knuth。


查看完整回答
反对 回复 2019-09-21
?
白衣染霜花

我已经重做了50,000行的测试,并且还在1标签方法中添加了多回显


for ($j=0;$j<30;$j++) {

    foreach ($results as $key=>$val){

    ?>

       <tr>

           <td><?php echo $results[$key][0]?></td>

           <td><?php echo $results[$key][1]?></td>

           <td><?php echo $results[$key][2]?></td>

           <td><?php echo $results[$key][3]?></td>

           <td><?php echo $results[$key][4]?></td>

           <td><?php echo $results[$key][5]?></td>

           <td><?php echo $results[$key][6]?></td>

           <td><?php echo $results[$key][7]?></td>

           <td><?php echo $results[$key][8]?></td>

           <td><?php echo $results[$key][9]?></td>

           <td><?php echo $results[$key][10]?></td>

           <td><?php echo $results[$key][11]?></td>

           <td><?php echo $results[$key][12]?></td>

           <td><?php echo $results[$key][13]?></td>

           <td><?php echo $results[$key][14]?></td>              

       </tr>

    <?php 

    }

}

duration1:31.15542483秒


for ($k=0;$k<30;$k++) {

    foreach ($results as $key1=>$val1){

        echo

           '<tr>

               <td>'.$results[$key1][0].'</td>

               <td>'.$results[$key1][1].'</td>

               <td>'.$results[$key1][2].'</td>

               <td>'.$results[$key1][3].'</td>

               <td>'.$results[$key1][4].'</td>

               <td>'.$results[$key1][5].'</td>

               <td>'.$results[$key1][6].'</td>

               <td>'.$results[$key1][7].'</td>

               <td>'.$results[$key1][8].'</td>

               <td>'.$results[$key1][9].'</td>

               <td>'.$results[$key1][10].'</td>

               <td>'.$results[$key1][11].'</td>

               <td>'.$results[$key1][12].'</td>

               <td>'.$results[$key1][13].'</td>

               <td>'.$results[$key1][14].'</td>              

           </tr>';

    }

}

duration2:30.23169804秒


for ($l=0;$l<30;$l++) {

    foreach ($results as $key2=>$val2){     

           echo'<tr>';

               echo'<td>'.$results[$key2][0].'</td>';

               echo'<td>'.$results[$key2][1].'</td>';

               echo'<td>'.$results[$key2][2].'</td>';

               echo'<td>'.$results[$key2][3].'</td>';

               echo'<td>'.$results[$key2][4].'</td>';

               echo'<td>'.$results[$key2][5].'</td>';

               echo'<td>'.$results[$key2][6].'</td>';

               echo'<td>'.$results[$key2][7].'</td>';

               echo'<td>'.$results[$key2][8].'</td>';

               echo'<td>'.$results[$key2][9].'</td>';

               echo'<td>'.$results[$key2][10].'</td>';

               echo'<td>'.$results[$key2][11].'</td>';

               echo'<td>'.$results[$key2][12].'</td>';

               echo'<td>'.$results[$key2][13].'</td>';

               echo'<td>'.$results[$key2][14].'</td>';              

           echo'</tr>';

    }

}

duration3:27.54640007秒


原始的2种方法之间没有太大区别,但是看起来@poke较少的话它要快很多


由于我怀疑我一口气需要这么多的数据,我想我会继续使用很多标签,代码缩进看起来更整洁,“查看源代码”的布局更准确


查看完整回答
反对 回复 2019-09-21
?
呼唤远方

您可以轻松忽略两者之间的性能差异。有了当今的现代计算资源,两者之间的差异实际上并不重要。真正不用担心这种打印到屏幕的东西。您还应该考虑其他很多东西。除此之外,在代码的最佳性能和可维护性之间始终存在争论。您不能总是尝试获得最佳性能。相反,您应始终考虑性能问题以及需要花费的时间来改进它们。


查看完整回答
反对 回复 2019-09-21

添加回答

回复

举报

0/150
提交
取消
意见反馈 邀请有奖 帮助中心 APP下载
官方微信