[英]Switch Statement Performance C#
我们使用switch语句根据一系列条件对对象进行一些处理,我们期望在所有情况下调用默认情况。
我们对解决这个问题的最佳方式存在分歧。
我们中的一些人更喜欢例A:
switch (task)
{
case A:
ProcessA();
goto default;
case B:
ProcessB();
goto default;
case C:
ProcessC();
goto default;
default:
Final();
}
而其他人则建议使用类似B的例子:
switch (task)
{
case A:
ProcessA();
break;
case B:
ProcessB();
break;
case C:
ProcessC();
break;
}
Final();
因为无论如何都会在所有情况下调用Final()
。
这是个人偏好的情况,还是存在客观的性能差异。
我们应该注意哪些指导方针或问题?
这是用C#编写的API,并且会经常调用。 我们渴望做对!
干杯!
我会说坚持做例B.
手动插入代码到“跳转”是没有意义的。 特别是当你在所有情况下跳到同一个地方时。 这就是代码块的用途。 示例B读取得更好,并且更容易遵循。
至于性能,我不确定哪个更快(测量它?)。 但在这一点上,它看起来像一个你不应该关心的微优化。 在这个例子中,我会说可读性和可维护性胜过你可能获得的任何微小的性能提升。
示例B是任何方面的最佳答案。
永远不要使用goto
。 它降低了代码的性能和可读性。 CPU使用一些技术来预测未来的指令以防止性能降低。 使用goto
会干扰这种导致性能降低的技术!
重复一段代码将增加程序的二进制大小。 所以在所有情况下重复Final()
增加代码的二进制大小,这是不愉快的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.