如果是,否则切换案例

时间:2009-01-02 10:09:25

标签: c# .net performance

考虑到性能时哪个更好 if else if 切换案例

重复:Is there any significant difference between using if/else and switch-case in C#?

7 个答案:

答案 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代码。

人们希望他们是完全相同的。