猿问

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

“否则”是否比“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语句)。我应该把它们变成开关吗?


杨魅力
浏览 819回答 3
3回答

一只名叫tom的猫

你为什么在乎?99.99%的时候,你不应该在意。这些类型的微优化不太可能影响代码的性能。此外,如果您需要关心,那么您应该对您的代码进行性能分析。在这种情况下,找出交换机大小写和IF-Other块之间的性能差异将是微不足道的。编辑:为了清楚起见:实现哪个设计更清晰、更易于维护。通常,当面对一个巨大的开关箱或如果-否则阻塞,解决方案是使用多态性。找到正在改变的行为并封装它。我以前不得不处理这种巨大的、丑陋的转换用例代码,通常简化起来并不难。但是哦,太满足了。

慕运维8079593

相信本绩效评估,开关箱更快。以下是结论:结果表明,开关语句的执行速度比if-否则-if梯子快.这是因为编译器能够优化开关语句。在if-否则-if梯子的情况下,代码必须按照程序员确定的顺序处理每个if语句。但是,由于开关语句中的每一种情况都不依赖于前面的情况,所以编译器能够重新排序测试,从而提供最快的执行。
随时随地看视频慕课网APP
我要回答