这不是关于原则或常见编码程序的问题,它是关于PHP如何处理代码的问题,或者更确切地说,不处理它应该忽略的代码,而不是更好地理解PHP的工作原理
情景1:
if (1==2) { echo rand(0,99); }
显然,上面的代码没有任何输出,这不是问题所在;而是关于PHP是否认为进行任何输出。当PHP浏览页面时,它是否完全跳过分配给失败的if-check的代码,还是分配了除文件大小之外的任何类型的资源?
情景2:
if (1==2) { for ($x = 0; $x <= 999999; $x++) { echo rand(0,99); } }
与方案1类似但有一个关键区别来澄清这一点,考虑到1 == 2总是假的,这个代码是否使用了比前一个更多的资源,或者它们都是同样“便宜”的处理?或者是否有任何“隐藏”的动作加起来,即使循环中的代码与此一样最小?
情景3:
for ($x = 0; $x <= 999999; $x++) { if (1==2) { echo rand(0,99); } }
现在,这个人应该看到一百万次虚假陈述,但在资源方面真的有多重要?它是否会继续检查1是2还是PHP从第一次检查时“学习”?它是否花费了除此之外的任何资源,或者是一个简单的if-check这样的循环内部PHP将处理的唯一内容?即使1不是2,它会“读”echo rand(0,99);
一百万次吗?
情景4:
for ($x = 0; $x <= 999999; $x++) { if (1==2) { for ($x = 0; $x <= 999999; $x++) { echo rand(0,99); } } }
最后,将它们全部组合在一起,这个例子是资源浪费的大规模环路循环,还是内部循环会被处理完全忽略?换句话说,1!= 2会导致PHP 完全跳过处理内部循环,还是会浪费内存应该忽略的代码?在处理和资源方面,这种情况与前三种情况有何不同?
提前感谢有关此问题的任何PHP和内存使用专业知识,我希望这个问题的答案能够更好地理解PHP如何为我和其他人编写代码
修改: 另一个有点相关的例子是在一个循环内有大量的注释与外部相比;将循环中的注释以不同的方式影响性能 (无论你认为它是多么“不明显”)而不是在循环之外的相同数量的注释?
答案 0 :(得分:3)
1&amp; 2)不评估这些if块内的所有内容
3)PHP没有学到任何东西,如果检查它将执行100万。这并不重要,但也不是无足轻重的。正如一位评论者建议的那样,试一试并查看页面时间。
4)这产生与#3
相同的处理量