Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 打开/关闭标签&;演出_Php_Html_Performance_Templates_Tags - Fatal编程技术网

Php 打开/关闭标签&;演出

Php 打开/关闭标签&;演出,php,html,performance,templates,tags,Php,Html,Performance,Templates,Tags,这可能是一个愚蠢的问题,但作为一个对PHP比较陌生的人,我想知道在HTML模板代码中频繁打开和关闭PHP标记是否存在任何与性能相关的问题,如果是这样的话,使用PHP标记的最佳实践是什么 我的问题不是关于结束标记的重要性/正确性,也不是关于哪种类型的代码比另一种类型的代码更可读,而是关于如何解析/执行文档以及它可能对性能产生的影响 为了说明,考虑以下两个极端: 混合使用PHP和HTML标记: <?php echo '<tr> <td>'.$vari

这可能是一个愚蠢的问题,但作为一个对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
<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

//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
<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

//PHP标签打开了五次
我有兴趣听到一些关于这方面的观点,即使只是听到这没有什么区别


谢谢。

您可以轻松忽略这两者之间的性能差异。在当今的现代计算资源中,两者之间的差异其实并不重要。这种打印到屏幕的东西真的不用担心。你以前应该考虑很多其他的事情。
除此之外,代码的最佳性能和可维护性之间始终存在争论。你不能总是试图达到最好的表现。取而代之的是,你应该总是考虑性能问题以及需要花费的时间来改进它们。

3个简单的规则让你正确:

  • 没有语法问题会影响性能。数据操纵不起作用
  • 谈到性能时,仅支持评测的结果
  • 过早优化是万恶之源
性能问题很难理解。建议新手不要考虑这一点。因为他们总是对琐事印象深刻,看不到真正重要的事情。只是因为缺乏经验

你的问题也一样。想象一下你会有什么不同。即使是大的一个,比如说,一种方法的速度也要快两倍。天哪,两次!我选择了它并优化了我的应用程序,现在它的运行速度将提高50%

错误。不是50%。你永远不会注意到甚至测量到这种速度的增加。因为您优化了只占整个脚本运行时00001%的部分

对于大型HTML表,浏览器需要很长时间才能呈现它。比你创造的要多得多

评测是性能领域的一个关键词。如果没有“评测”这个词,你可以毫无疑问地将任何与性能相关的问题扔掉。 同时,剖面分析不是一门火箭科学。我只是在测量脚本不同部分的运行时间。可以使用某些探查器(如xdebug)完成,甚至可以使用
microtime(1)
手动完成。只有在检测到最慢的部分后,才可以开始测试

在提出绩效问题之前,先了解个人资料。 并学会在没有真正原因的情况下不要问绩效问题


过早优化是万恶之源。

我用50000行重新做了测试,并添加了multi-echo in 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 
    }
}
for($j=0;$j$val){
?>

容易翻译成伪代码的代码更好。上面的例子证明了这一点。哪一个需要更长的时间

"Start php, do this 30 times:, then stop php.  Print this.  Start php, print this, stop php. Print this.  Start php, print this, stop php.Print this.  Start php, print this, stop php. Print this.  Start php, print this, stop php.Print this.  Start php, print this, stop php. Print this.  Start php, print this, stop php.Print this.  Start php, print this, stop php..."

"Start php, do this 30 times: print this, then add this to that, then add this to that, then add this to that, then add this to that, then add this to that, then add this to that..."

"Start php, do this 30 times: print this, print this, print this, print this, print this, print this, print this..."
就我个人而言,我会:

"Start php, define this, do this 30 times: add this to that.  Print." 
对于新手来说,关于口译员如何工作以及为什么一种方法比另一种方法快的技术解释是无关紧要的。最好只知道经验法则:

  • 越简单越好
  • 如果它不能放在一个页面上,那么它做的太多了(分解)
  • 如果不能在索引卡上手工编写伪代码,那么它就太复杂了

  • 如果整体结果更简单,请使用更多标记。句号。

    这方面的真正问题是内存使用。字符串串联和大规模回显可以成倍增加内存使用

    如果你垃圾邮件的php标签,你的代码将变得不可读


    最好的解决方案是使用模板引擎,避免将代码和表示完全混合。

    有趣的问题,+1。虽然我觉得你给出的两个示例不是比较理想的一对,但我得到了要点:)谢谢……我现在正好在处理一个庞大的html表,而这个问题有点盯着我看即使这有点理论性。离题ish:你应该使用循环和数据数组/迭代器来填充表。@fireeyedboy…当然,我同意,但这并不总是实用的。从数据库中获取数据时需要技巧,或者HTML结构不适合整齐地放入循环中。我认为可读性是最重要的这里。你不会看到像这样琐碎的东西有任何大的增加/减少。第三个测试用例是使用多个echo语句和一个php标记,因为你不需要使用字符串连接。我用50000行重新做了测试,并添加了多个echo in 1标记方法,当我们想要优化。我们经常意识到这种优化是无用的。从外观上看,前两个示例输出的空白比上一个示例多得多。这可能是运行时间更高的原因。此外,
    echo
    接受多个表达式输出。在度量中没有考虑具有该功能的变体。为什么我如果我用“基准”这个词而不是“个人资料”,那就不太好了?意思有什么不同吗?如果我知道这些不同之处,我将不胜感激:)+1引用Donald Knuth的话,+200是非常有见地的答案。@nikic,Col什么时候说用“基准”这个词不好的?听起来像是李