首页 / 知识

关于php:if语句条件优化

2023-04-13 15:40:00

关于php:if语句条件优化

if statement condition optimisation

我有一个带两个条件的if语句(由OR运算符分隔),其中一个条件覆盖了70%的情况,并且处理/执行所需的时间比第二个条件少得多,因此仅出于速度I的考虑如果第一个条件评估为false,则希望处理第二个条件。

如果我对条件进行排序,以便第一个条件(较快的条件)首先出现在if语句中-在满足此条件并评估为true的情况下,是否还要处理第二个条件?

1
2
3
if ( (condition1) | (condition2) ){
  // do this
}

还是我需要嵌套两个if语句以仅在第一个条件为false时才检查第二个条件?

1
2
3
4
5
if (condition1){
  // do this
}else if (condition2){
  // do this
}

我正在使用PHP,但是我认为这可能与语言无关。


对于C,C,C#,Java和其他.NET语言,布尔表达式进行了优化,以便一旦知道足够多的内容,就不会对其进行评估。

执行混淆代码的一个老技巧是使用它来创建if语句,例如:

1
a || b();

如果" a"为真,则" b()"将永远不会被求值,因此我们可以将其重写为:

1
2
if(!a)
    b();

,类似地:

1
a && b();

将成为

1
2
if(a)
    b();

请注意,这仅对||有效和


n


几乎每种语言都进行短路评估。意味着仅在绝对必要时才评估第二个条件。为此,大多数语言都使用双管道||,而不是单管道|。

请参阅http://en.wikipedia.org/wiki/短路评估


n


n


n


n


n


n


在大多数经过适当优化的语言中,前者可以正常工作。


因为这是与语言无关的标签,所以我会介绍一下。至少对于Perl来说,第一种选择就足够了,我对PHP并不熟悉。它从左到右求值,并在满足条件时退出。


条件语句优化情况

最新内容

相关内容

热门文章

推荐文章

标签云

猜你喜欢