4

说到PHP,我想问一下这两者在性能上是否有区别:

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

对比

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

  • 如果是,在性能上会有任何理论上的差异吗?(当然忽略这两个需要读取/编译/解释的时间)

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

ps如果您认为我的“全长手” if-then-else 代码太复杂,请提供最基本代码的示例并对此进行回答。

更新:

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

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

4

3 回答 3

5

好的,这很有趣

分别为您的两个示例进行了快速x 调试测试

这就是我所拥有的

在此处输入图像描述

在此处输入图像描述

当然,每次刷新可能会有不同的结果,把它们全部确保

第二种方法总是比第一种方法好

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

关于 Zend 优化器我没有测试

于 2013-07-02T13:44:15.177 回答
0

我经常丢弃 if-then-else 以受益于:

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

易于阅读,更少的大括号和紧凑。

于 2013-07-01T13:51:44.050 回答
-1

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

点击这里

于 2013-07-01T13:00:36.960 回答