PHP在不相关的代码(如果有的话)上浪费了多少资源?

PHP在不相关的代码(如果有的话)上浪费了多少资源?,php,memory,resources,Php,Memory,Resources,这不是一个关于原则或通用编码过程的问题,而是一个关于PHP如何处理代码的问题,或者更准确地说,不是一个为了更好地理解PHP如何工作而应该忽略的代码处理问题 情景1: if (1==2) { echo rand(0,99); } 显然,上面的代码不会有任何输出,这不是问题所在;而是关于PHP是否考虑进行任何输出。当PHP浏览页面时,它是完全跳过分配给失败的if检查的代码,还是只分配了文件大小之外的任何资源 情景2: if (1==2) { for ($x = 0; $x <= 999999

这不是一个关于原则或通用编码过程的问题,而是一个关于PHP如何处理代码的问题,或者更准确地说,不是一个为了更好地理解PHP如何工作而应该忽略的代码处理问题

情景1:

if (1==2) { echo rand(0,99); }
显然,上面的代码不会有任何输出,这不是问题所在;而是关于PHP是否考虑进行任何输出。当PHP浏览页面时,它是完全跳过分配给失败的if检查的代码,还是只分配了文件大小之外的任何资源

情景2:

if (1==2) { for ($x = 0; $x <= 999999; $x++) { echo rand(0,99); } }
最后,将它们结合在一起,这个例子是一个大规模的循环中的资源浪费,还是在处理过程中完全忽略了内部循环?换句话说,威尔1=2导致PHP完全跳过处理内部循环,还是会在应该忽略的代码上浪费内存?与前三种情况相比,这种情况在处理和资源方面有多大不同

提前感谢所有PHP和内存使用方面的专业知识,我希望这个问题的答案能让我和其他人更好地理解PHP是如何处理代码的

编辑: 另一个有点相关的例子是,与循环外部相比,循环内部有大量的注释;一个循环内的注释是否会以不同的方式影响性能(不管你认为它是什么样的“不可注意”),而不是在循环之外的相同数量的评论?

1和2)这些块内的所有内容都没有被评估< /p> 3) PHP没有学到任何东西,它将执行100万次检查。这并不重要,但也不是无关紧要的。正如一位评论者所建议的,尝试一下,看看页面的点击时间


4) 这将产生与#3相同的处理量

为什么您不。。。试试看?在测试代码中放入将写入文件、更新数据库或创建会话的内容,然后查看是否发生了这种情况。使用浏览器开发工具对页面加载计时,并查看循环是否会减慢加载速度。查看服务器/php进程是否占用更多内存。您还可以在代码块前后使用
microtime()
函数进行手动单元测试,同时检查操作系统的性能监视器。无论如何,就像@DaOgre Answeed一样,每个语言引擎(可能除了一些深奥的引擎)都是纯逻辑工作的,因此,没有理由去访问if声明中的虚假案例。如果错误,再见,再见,下一行。这个问题可能比第一眼看到的更有趣:也许sombody可以回答这个问题,其中涉及可能的字节码缓存(Zend Optimizer/APC)。实际上,这是一个很好的直截了当的回答(即使是OP的例子也很明显)+1尽管未计算
块中的代码,但会对其进行解析。在进行任何计算之前,整个脚本都会被解析并转换为内部格式。@Barmar您如何解释OP所述的“处理”?计算还是解析?因为现在我在想,如果从字面上看,两者都是。当然,这些循环不会被计算,所以当它们变成字节码时,与任何其他操作相比,不会增加更多的处理。@AlanMachado OP询问它是否“分配任何资源”。它为
if
的解析体分配内存。而且解析身体也需要很短的时间。
for ($x = 0; $x <= 999999; $x++) { if (1==2) { echo rand(0,99); } }
for ($x = 0; $x <= 999999; $x++) { if (1==2) { for ($x = 0; $x <= 999999; $x++) { echo rand(0,99); } } }