简写如果然后在PHP中的性能/优化

时间:2013-07-01 12:53:01

标签: php zend-optimizer shorthand-if php-opcode

谈到PHP,我想问一下这两者之间的性能是否存在差异:

$name=($IsBoy)?"George":"Mary";

VS

if($IsBoy)
{
    $name="George";
}
else
{
    $name="Mary";
}
  • 这两个会导致不同的操作码吗?

  • 如果是,那么 理论 的性能差异是什么? (当然忽略了这两者需要阅读/编译/解释的时间)

  • 如果,是的,那么像zend optimizer这样的优化器会利用这一点并自动进行任何重新安排吗?

P.S。如果你认为我的代码“全长”if-then-else太复杂了,请提供一个最基本的代码和答案的例子。

更新

我希望这个问题非常清楚,但似乎人们没有得到这个信息。这个问题是关于理论(......但是真实的和可测量的)性能差异(这就是为什么我在 理论中应用粗体斜体 )。请不要回答说什么编程风格更具可读性,而且这太过挑剔而不用担心性能。

P.S。 2:通过强调理论这个词我试图阻止类型的答案“不要担心它不值得麻烦,它只是纳秒。”

3 个答案:

答案 0 :(得分:4)

确定这很有意思

我为你的两个例子进行了快速 x debug 测试分别

在这里我得到了什么

enter image description here

enter image description here

当然,每次刷新都会有不同的结果,所有这些都确保

第二种方法优于第一种始终

即使每次刷新,你都会发现第一种方法偶尔会花费更少的时间 但这与PHP核心优化相关

关于Zend优化器,我没有测试

答案 1 :(得分:0)

我经常放弃if-then-else以获益:

$name = 'the expected';
if ([expr]) $name = 'the exception';

易于阅读,支撑更少,更紧凑。

答案 2 :(得分:-1)

正常的ifelse语句和三元运算符都有轻微的性能差异。您可以查看下面的stackoverflow链接以获取更多参考

Click here