考虑到性能时哪个更好 if else if 或切换案例
重复:Is there any significant difference between using if/else and switch-case in C#?
答案 0 :(得分:6)
对于可读性和意义,使用switch语句而不是IF语句的加载。
但是开关语句稍快一些:
http://www.blackwasp.co.uk/SpeedTestIfElseSwitch.aspx(首次登陆Google)
编译器可以优化switch语句,所以如果你有超过3个或4个不同的情况,请使用它。
答案 1 :(得分:3)
你在做什么?如果您正在打开一个字符串,C#编译器要么将它转换为字典或进入一系列if / else检查。哪个更快取决于有问题的字符串(包括候选字符串)。
如果你打开一个整数值,我相信C#编译器总是使用一个IL开关语句 - 但这可能会或可能不会比if / else序列更快,具体取决于所涉及的值。 (如果它们位于一个大的连续块中,CLR可以跳到表中的正确位置 - 如果它们非常不同,我怀疑它没有帮助。)
这只是一个空闲的查询,还是你真的在这个级别进行微优化?在绝大多数情况下,任何性能差异都是微不足道的 - 为可读性而写。
答案 2 :(得分:1)
这更像是一种风格而非表现的问题。在我看来,任何表现差异都是可以忽略不计的。另请参阅https://stackoverflow.com/questions/395618/ifelse-vs-switch。
答案 3 :(得分:0)
如果您使用的是int / string / etc,那么switch
会有一些更复杂的跳转选项,如果您有很多条件,可能会使switch
更有效率。但是,差异可能不大,switch
不是所有类型的选项(仅基于整数和字符串)。
答案 4 :(得分:0)
我已经读过switch语句可以稍快一点。
答案 5 :(得分:0)
在解决性能问题时,您必须使用实际数据来衡量差异。您从推测的角度提出这一事实表明您没有实际的性能问题需要处理,因此您应该担心哪个更具可读性/可维护性
答案 6 :(得分:0)
Tricky,你必须运行测试,因为if和switch会产生不同的IL代码。
人们希望他们是完全相同的。