If else if or Switch case
在考虑性能时,哪一个更好否则,如果或开关盒
重复:在C中使用if/else和switch case有什么显著区别吗?
对于可读性和感知,使用switch语句而不是加载if语句。
switch语句速度稍快,不过:
http://www.blackwasp.co.uk/speedtestifelswitch.aspx(首次点击谷歌)
编译器可以优化switch语句,因此如果您有超过3个或4个不同的情况,可以使用
你在打开什么?如果要打开一个字符串,C编译器要么将其转换为字典,要么将其转换为一系列if/else检查。哪个更快取决于所讨论的字符串(包括候选字符串)。
如果您要打开整数值,我相信C编译器总是使用IL switch语句-但根据所涉及的值,这可能比if/else序列快,也可能不快。(如果它们在一个大的连续块中,clr就可以跳转到表中的正确位置-如果它们非常不同,我怀疑这没有帮助。)
这仅仅是一个空闲查询,还是您真的在这个级别上进行了微优化?在绝大多数情况下,任何性能差异都是无关紧要的——为了可读性而写。
这更像是一个风格问题,而不是性能问题。在我看来,任何绩效差异都是可以消除的。另请参阅https://stackoverflow.com/questions/395618/ifelse-vs-switch。
很棘手的是,您必须运行测试,因为if和switches会导致不同的il代码。
人们希望它们是相同的。
在解决性能问题时,必须使用实际数据来衡量差异。从推测的角度来看,您询问它的事实表明您没有实际的性能问题需要处理,因此您应该担心哪个更可读/可维护。
我已经读到switch语句可以稍微快一点。
如果您使用int/string/etc,那么