嵌套的if条件有利于性能


Nested if condition is good for perfomance?

我使用相同的php页面进行不同的操作。条件方面,我正在做一些动作

哪一个表现良好?

<>之前这一个如果(catid美元){…一些动作}如果(sub_catid美元){…一些动作}如果(sub_sub_catid美元){…一些动作}之前

或This one

<>之前如果(catid美元){. .一些行动其他}{如果(sub_catid美元){. .一些行动其他}{如果(sub_sub_catid美元){. .一些行动}}}

首先,这两个词有非常不同的含义。如果所有这些变量都为TRUE,第一个可以允许执行每一条语句。第二个系统将在第一次发现TRUE时"短路"。

我想你要找的是:

if($catid) { 
    .. some action 
} else if($sub_catid) { 
    .. some action 
} else if($sub_sub_catid) {
    .. some action
}

加分项:可读性更强!

都有很好的性能。对一个简单变量的if检查非常快。从理论上讲,第二种方法更快,但你几乎无法测量其中的差异。

然而,在语义上,它们是不一样的。如果同时设置了$catid和$subcatid,则在第一种情况下,同时执行第一个和第二个操作,而在第二种情况下,只执行第一个操作。

所以总是要小心这样的"优化"。你可能会让你的代码快一纳秒,但它可能会降低可读性,甚至可能会崩溃!

如果条件不能同时为真最好的方法是使用switch语句

switch($mycondition){
case 'category':
//Category statement here
break;
case 'sub_category':
//Another Statement here
break;
default:
//Other  cases
}