大量三元条件对性能的影响(如果有的话)是什么?


What, if any, is the performance effect of lots of ternary conditionals?

如果我在PHP中使用大量的三元条件运算符,会对脚本的性能产生不利影响吗?

例如:

$var = (cond)?"success":"error";
if(cond) success else error

我更喜欢使用三元条件,因为它使代码看起来更简洁。

如果我在PHP中使用了很多三元条件运算符,它会对我的脚本性能有不利影响吗?


$var = (cond)?"success":"error";

这是一个三元条件(或"inline if")…

if(cond) success else error

…但这只是一个普通的if - else语句,缺少换行符和大括号。它在功能上与:

相同
if (cond) {
   success
}
else {
   error
}

我更喜欢使用三元条件,因为它使代码看起来

不一定。因此,在你的风格决定中,要小心你所做的似乎是一种笼统的概括。

你能给我们定义一下内联吗?使用:

$var = (cond)?"success":"error";

if(cond) { 
   $var = "success";
}else{
   $var = "error";
}

不会给您带来任何明显的性能差异。但是,如果您计划将HTML中的inline as与PHP混合使用:

$var = "success"
echo "<p>$var</p>";

我建议检查模板系统,如smarty。

简短的回答是,这取决于情况,但通常您不会注意到性能上的差异。通常情况下,如果测试条件是少量数据,则性能几乎可以相同。但是对于较大的数据集,使用三元操作符的性能可能会较慢。

我建议你在你的代码中使用它,只有当你的代码真的开始爬行时才关心你自己。

链接到这样做的帖子性能测试:http://fabien.potencier.org/article/48/the-php-ternary-operator-fast-or-not