首页 / PHP / PHP解释器是否消除了死条件?
PHP解释器是否消除了死条件?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHP解释器是否消除了死条件?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1083字,纯文字阅读大概需要2分钟。
内容图文
![PHP解释器是否消除了死条件?](/upload/InfoBanner/zyjiaocheng/750/6c4e00b6c6ad491fb5f82c7226b03861.jpg)
在将PHP源代码转换为操作码之前,是否存在消除死条件的优化过程?
例:
<?php
if (false) {
echo 'false';
}
echo 'true';
它变成了回声’真’;?
如果答案是肯定的,PHP可以处理以下哪种情况?
if(false); //Explicit boolean
$true = true; if($true); //Variable that was assigned a constant boolean
if(ClassName::Constant); //Class constant
if(1>2); //Constant value expression
如果有版本特定的差异,请慷慨.
解决方法:
是的,opcache优化器的“块传递”部分将消除无法访问的块.对于您的特定示例:
if(false); // 1. Will be optimized
$true = true; if($true); // 2. Will NOT be optimized
if(ClassName::Constant); // 3. Will MAYBE be optimized
if(1>2); // 4. Will be optimized
示例2将不会被优化,因为我们当前不对“真实”变量执行常量传播.目前,优化器不使用SSA形式,因此我们没有信心执行此类优化.一旦我们有了这个,我们可以使用SCP / SCCP通行证来解决这个问题.
可以优化示例3,具体取决于ClassName的定义位置.通常,如果它是非可重新绑定范围中的self或同一文件中定义的类,则将进行优化.此外,常数的值还必须是静态可评估的常量表达式.
无法访问的代码消除是作为block_pass.c的一部分实现的.
内容总结
以上是互联网集市为您收集整理的PHP解释器是否消除了死条件?全部内容,希望文章能够帮你解决PHP解释器是否消除了死条件?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。