谈到PHP,我想问一下这两者之间的性能是否存在差异:
$name=($IsBoy)?"George":"Mary";
VS
if($IsBoy)
{
$name="George";
}
else
{
$name="Mary";
}
这两个会导致不同的操作码吗?
如果是,那么 理论 的性能差异是什么? (当然忽略了这两者需要阅读/编译/解释的时间)
如果,是的,那么像zend optimizer这样的优化器会利用这一点并自动进行任何重新安排吗?
P.S。如果你认为我的代码“全长”if-then-else太复杂了,请提供一个最基本的代码和答案的例子。
更新
我希望这个问题非常清楚,但似乎人们没有得到这个信息。这个问题是关于理论(......但是真实的和可测量的)性能差异(这就是为什么我在 理论中应用粗体和斜体 )。请不要回答说什么编程风格更具可读性,而且这太过挑剔而不用担心性能。
P.S。 2:通过强调理论这个词我试图阻止类型的答案“不要担心它不值得麻烦,它只是纳秒。”
答案 0 :(得分:4)
确定这很有意思
我为你的两个例子进行了快速 x debug 测试分别
在这里我得到了什么
当然,每次刷新都会有不同的结果,所有这些都确保
第二种方法优于第一种始终
即使每次刷新,你都会发现第一种方法偶尔会花费更少的时间 但这与PHP核心优化相关
关于Zend优化器,我没有测试
答案 1 :(得分:0)
我经常放弃if-then-else以获益:
$name = 'the expected';
if ([expr]) $name = 'the exception';
易于阅读,支撑更少,更紧凑。
答案 2 :(得分:-1)
正常的ifelse语句和三元运算符都有轻微的性能差异。您可以查看下面的stackoverflow链接以获取更多参考