Bal*_*cks 65 php performance if-statement switch-statement
哪种方法更好更快:if还是switch?
if(x==1){
echo "hi";
} else if (x==2){
echo "bye";
}
switch(x){
case 1
...
break;
default;
}
Run Code Online (Sandbox Code Playgroud)
Thi*_*ter 131
你的第一个例子是完全错误的.你需要elseif而不仅仅是else.
如果您使用if..elseif...或switch主要是偏好问题.表现是一样的.
然而,如果所有条件的类型x == value与x是相同的在每一个条件,switch通常是有道理的.switch如果有两个以上的条件,我也只会使用.
其中A的情况下switch,其实是给予你一个性能上的优势是,如果可变部分是一个函数调用:
switch(some_func()) {
case 1: ... break;
case 2: ... break;
}
Run Code Online (Sandbox Code Playgroud)
然后some_func()只用一次调用
if(some_func() == 1) {}
elseif(some_func() == 2) {}
Run Code Online (Sandbox Code Playgroud)
它将被调用两次 - 包括函数调用可能发生的两次副作用.但是,您可以随时使用$res = some_func();,然后$res在您的if条件下使用- 这样您就可以完全避免这个问题.
在那里你的情况不能在所有使用开关是当你有更复杂的条件- switch仅适用于x == y有y是一个恒定值.
小智 25
根据phpbench.com,如果/ elseif略快,特别是在使用严格比较(===)时.
但是,如果你想在一个被称为数千次的函数上削减微秒,那真的很重要.
Ali*_*xel 16
只要条件数大于3(为了便于阅读),就会使用switch一般规则.
if/ else if/ else更灵活(因此更好),但switch稍微快一点,因为它只计算一次条件然后检查输出,而if每次都必须这样做.
编辑:似乎switch比if毕竟慢,我发誓这不是这种情况......
| 归档时间: |
|
| 查看次数: |
60579 次 |
| 最近记录: |