Ios 这段代码使用了switch case和if-else哪个更好?
代码 && 我想知道在很多方面哪一个更好代码行,运行效率Ios 这段代码使用了switch case和if-else哪个更好?,ios,objective-c,Ios,Objective C,代码 && 我想知道在很多方面哪一个更好代码行,运行效率 我喜欢斯威夫特的开关盒……使用开关/盒。这样做更清楚,代码更可读。此外,您总是能够捕捉到默认情况,这使得算法具有确定性。切换情况在性能上总是更好、效率最高,因为所有条件都是在编译时静态分配的,不需要运行时计算 为了让代码更清晰,您也可以这样做 switch (section) { case 0: return 15; case 1: return 10; case 2:
我喜欢斯威夫特的开关盒……使用开关/盒。这样做更清楚,代码更可读。此外,您总是能够捕捉到默认情况,这使得算法具有确定性。切换情况在性能上总是更好、效率最高,因为所有条件都是在编译时静态分配的,不需要运行时计算 为了让代码更清晰,您也可以这样做
switch (section) {
case 0:
return 15;
case 1:
return 10;
case 2:
return 10;
case 3:
return 10;
case 4:
return 15;
default:
break;
}
return 0;
switch case更好,因为它是可读的,正如您在编译时在switch case中创建了一种查找表一样。所以不需要计算和计算。我倾向于在可能的时候使用开关。速度优化可以是真实的,但对于小测试,我真的不认为它有什么意义。在我看来,真正的优势在于切换必须是彻底的:您必须使用默认值catch来处理所有可能的值 此外,Swift极大地提高了开关的可读性,因为您不必添加break语句来避免下一种情况的失败,并且您可以将您的条件分组到同一行:
switch (section) {
case 0:
case 4:
return 15;
case 1:
case 2:
case 3:
return 10;
default:
return 0;
break;
}
编译器在优化switch语句方面似乎优于if语句
编译器不知道if语句的求值顺序对您是否重要,因此无法执行任何优化。您可以在if语句中调用方法,从而影响变量。通过switch语句,它知道可以同时计算所有子句,并且可以将它们按最有效的顺序排列。switch更好,用例范围更广,正如@Michaël Azevedo所提到的
当编译器点击switch语句时,它会创建一个包含所有可能条件的查找表。而在if-else类型的验证中,编译器必须在每次执行if、else-if、else..时计算条件当选项数量相对较少时,切换效果更好。if语句更难读取,创建NSArray只是为了查看列表中是否有某个值,这会带来很大的开销。如果有几十个或更多选项,由于可读性,NSArray方法会更好。
switch (section) {
case 0:
case 4:
return 15;
case 1:
case 2:
case 3:
return 10;
default:
return 0;
break;
}
switch (section) {
case 0, 4:
return 15
case 1...3:
return 10
default:
return 0
}