哪个是更好,最快的方法:if或switch?
if(x==1){
echo "hi";
} else if (x==2){
echo "bye";
}
switch(x){
case 1
...
break;
default;
}
哪个是更好,最快的方法:if或switch?
if(x==1){
echo "hi";
} else if (x==2){
echo "bye";
}
switch(x){
case 1
...
break;
default;
}
x
和1
比较?确切地说,它还在内部执行==
比较。
Answers:
您的第一个示例就是错误的。您需要elseif
的不仅仅是else
。
如果使用if..elseif...
或switch
主要是偏好设置。表现是一样的。
然而,如果所有条件的类型x == value
与x
是相同的在每一个条件,switch
通常是有道理的。我也只会switch
在有两个以上条件的情况下使用。
其中A的情况下switch
,其实是给予你一个性能上的优势是,如果可变部分是一个函数调用:
switch(some_func()) {
case 1: ... break;
case 2: ... break;
}
然后some_func()
仅在
if(some_func() == 1) {}
elseif(some_func() == 2) {}
它会被调用两次-包括函数调用可能发生的两次副作用。但是,你总是可以使用$res = some_func();
,然后用$res
你的if
条件-这样就可以避免这个问题产品总数。
在那里你的情况不能在所有使用开关是当你有更复杂的条件-switch
仅适用于x == y
有y
是一个恒定值。
In PHP, you can also write 'else if' (in two words) and the behavior would be identical to the one of 'elseif' (in a single word).
elseif
因为解释器只需要处理一条指令,而不是两条指令。
else if
每次都更快。见youself:sandbox.onlinephpfunctions.com/code/...
phpbench.com
该答案的一部分,并直接引用其中的重要部分。我将编辑您的帖子,以向您展示格式正确的答案。
switch
和if/else
仅在两个选项上执行。我知道C#
例如switch
将使用查找表,并且从5个选择开始更快。我已经执行了与基准测试相同的性能测试,但是有10个选择而不是2个选择,而且switch
看起来更快!
我发现了这篇文章:https : //gist.github.com/Jeff-Russ/2105d1a9e97a099ca1509de1392cd314这表明switch / case比使用===的if / elseif更快。
它们还指示嵌套的if语句,这更有意义,并且可以提供更好的结果。
他们的时代:
嵌套if / elseif ===:0.25623297691345(嵌套IF)
开关/盒:0.33157801628113(SWITCH CASE)
if / elseif ===:0.45587396621704(平IF)
仅当===时:0.45587396621704(仅当)
在我看来,“ if / else”是更快但不比switch好,但是我更喜欢这样:
echo ($x==1?"hi":($x==2?"bye":""));
如果您必须做1,2种情况,如if / else if / else