【发布时间】:2013-06-28 14:27:48
【问题描述】:
说到PHP,我想问一下这两者在性能上是否有区别:
$name=($IsBoy)?"George":"Mary";
对
if($IsBoy)
{
$name="George";
}
else
{
$name="Mary";
}
这两个会导致不同的操作码吗?
如果是,性能会有任何理论上的差异吗? (当然忽略这两个需要读取/编译/解释的时间)
如果是,那么像 zend 优化器这样的优化器会利用这一点并自动进行任何重新安排吗?
附言如果您认为我的“全手写” if-then-else 代码过于复杂,请提供一个最基本的代码示例并对此进行回答。
更新:
我希望这个问题非常清楚,但似乎人们没有得到这个信息。这个问题是关于性能上的理论(......但真实且可测量)差异(这就是为什么我在 theoretical 中应用 bold 和 italic em>)。请不要回答说哪种编程风格更具可读性,而且这太吹毛求疵而不必担心性能。
附言2:通过强调理论这个词,我试图阻止“别担心它不值得麻烦,它只是纳秒”类型的答案。
【问题讨论】:
-
我不确定,但我的猜测是两者之间没有真正的性能差异,如果有,那将是你不应该担心的微优化。
-
Fabien 的文章也非常符合我的观察;虽然很高兴看到有关原因的解释
-
@PédeLeão 它很实用,因为它在现实生活中具有应用,并且完全可以回答。我问了 1)关于生成的操作码(这不是抽象的东西)2)我问了关于性能的测量(现实生活中的测量)和 3)我问了 zend 优化器(这对你来说足够实用吗?)。如果您认为此答案失败,则可以对其进行标记。看在上帝的份上,我发布了代码。
-
Zend 优化器是关于以实际方式改进代码,而不仅仅是理论上的。当您开始谈论纳秒级的性能结果时,您更加让我相信您的问题没有实际目的。
标签: php zend-optimizer shorthand-if php-opcode