当我编写代码时,通常会使用多个if语句:
if(logicalCheck){
...
}
if(secondLogicalCheck){
...
}
我很少使用If Else。我知道使用我的方法意味着多个逻辑检查可能会被满足,而在if else链中只能发生一个。
我的问题是,在C、Java或JavaScript中使用一种方法是否有性能优势?使用多个if语句有什么特别的问题吗?
当我编写代码时,通常会使用多个if语句:
if(logicalCheck){
...
}
if(secondLogicalCheck){
...
}
我很少使用If Else。我知道使用我的方法意味着多个逻辑检查可能会被满足,而在if else链中只能发生一个。
我的问题是,在C、Java或JavaScript中使用一种方法是否有性能优势?使用多个if语句有什么特别的问题吗?
如果仅使用if
语句,则编译器或其他将测试所有条件,但如果使用else if
(如果可能),则在通过任何条件后,下一个else if
将不会被测试或检查。
if (age < 10){
// do something
}
if (age < 20 && age > 10){
// do something
}
if (age < 30 && age > 20){
// do something
}
所有条件将被测试/比较
但在这种情况下
if (age < 10){
// do something
}
else if (age < 20 && age > 10){
// do something
}
else if (age < 30 && age > 20){
// do something
}
如果年龄是5岁,只有第一个条件会被测试。if else-if
可以节省一些条件的评估。由于评估条件可能很昂贵,在没有实际需要的情况下评估多个条件可能会在性能方面造成损失。if
语句:if(conditionA){
// do what suppose to do
}
if(conditionB){
// do what suppose to do
}
. . .
如果您想要应用您所设定的条件,则应使用 if else
或 if else if
语句:
if(conditionA) {
// do what suppose to do on conditionA
} else {
// do what suppose to do if the conditionA doesn't satisfied.
}
if(conditionA) {
// do what suppose to do on conditionA
} else if(conditionb) {
// do what suppose to do on conditionB
} else {
// do what suppose to do if non of the conditions were satisfied.
}
if else if
链,最好使用 switch case
语句:switch(true){
case conditionA:
// do what suppose to do on conditionA
break;
case conditionB:
// do what suppose to do on conditionB
break;
default:
// do what suppose to do if non of the conditions were satisfied.
}
HashMap
可以很大程度上提高性能,因为访问每个HashMap
几乎是瞬间完成的。 - Morteza Tourani
else if
,这样可以避免多次条件检查。 - Tushar