为了账号安全,请及时绑定邮箱和手机立即绑定

“否则”是否比“Switch()case”更快?

“否则”是否比“Switch()case”更快?

杨魅力 2019-07-04 13:10:15
“否则”是否比“Switch()case”更快?我是个前帕斯卡人,目前正在学习C#。我的问题如下:下面的代码是否比切换更快?int a = 5;if (a == 1){     ....}else if(a == 2){     ....}else if(a == 3){     ....}else if(a == 4){     ....}else     ....开关:int a = 5;switch(a){     case 1:         ...         break;     case 2:         ...         break;     case 3:         ...         break;     case 4:         ...         break;     default:         ...         break;}哪个更快?我问这个问题,因为我的程序有一个类似的结构(很多,很多其他的if语句)。我应该把它们变成开关吗?
查看完整描述

3 回答

?
一只名叫tom的猫

TA贡献1906条经验 获得超2个赞

你为什么在乎?

99.99%的时候,你不应该在意。

这些类型的微优化不太可能影响代码的性能。

此外,如果您需要关心,那么您应该对您的代码进行性能分析。在这种情况下,找出交换机大小写和IF-Other块之间的性能差异将是微不足道的。

编辑:为了清楚起见:实现哪个设计更清晰、更易于维护。通常,当面对一个巨大的开关箱或如果-否则阻塞,解决方案是使用多态性。找到正在改变的行为并封装它。我以前不得不处理这种巨大的、丑陋的转换用例代码,通常简化起来并不难。但是哦,太满足了。


查看完整回答
反对 回复 2019-07-04
?
慕运维8079593

TA贡献1876条经验 获得超5个赞

相信本绩效评估,开关箱更快。

以下是结论:

结果表明,开关语句的执行速度比if-否则-if梯子快.这是因为编译器能够优化开关语句。在if-否则-if梯子的情况下,代码必须按照程序员确定的顺序处理每个if语句。但是,由于开关语句中的每一种情况都不依赖于前面的情况,所以编译器能够重新排序测试,从而提供最快的执行。


查看完整回答
反对 回复 2019-07-04
  • 3 回答
  • 0 关注
  • 769 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信