相关疑难解决方法(0)

"else if"是否比"switch()case"更快?

可能重复:
在C#中使用if/else和switch-case之间是否有任何显着差异?

我是前Pascal人,目前正在学习C#.我的问题如下:

下面的代码比开关更快吗?

int a = 5;

if (a == 1)
{
    ....
}
else if(a == 2)
{
    ....
}
else if(a == 3)
{
    ....
}
else if(a == 4)
{
    ....
}
else
    ....
Run Code Online (Sandbox Code Playgroud)

和开关:

int a = 5;

switch(a)
{
    case 1:
        ...
        break;

    case 2:
        ...
        break;

    case 3:
        ...
        break;

    case 4:
        ...
        break;

    default:
        ...
        break;


}
Run Code Online (Sandbox Code Playgroud)

哪一个更快?

我问,因为我的程序有类似的结构(许多很多"其他如果"语句).我应该把它们变成开关吗?

c# performance if-statement switch-statement

344
推荐指数
11
解决办法
34万
查看次数

案例与其他案例如果:哪个更有效率?

可能重复:
"else if"比"switch()case"快吗?
Java中if/else与switch的相对性能是什么?

我已经在运行中进行编码....当调试器逐步执行case语句时,它会立即跳转到与条件匹配的项,但是当使用if/else指定相同的逻辑时,它会逐步执行每个if语句直到它找到胜利者.case语句是否更有效,或者我的调试器只是优化了一步?(不要担心语法/错误,我在SO中键入它,不知道它是否会编译,它的原理我之后,我不想做它们作为int因为我依稀记得一些关于使用带有整数的偏移的情况)我使用C#,但我对编程语言的一般答案感兴趣.

switch(myObject.GetType()){

    case typeof(Car):
        //do something
        break;

    case typeof(Bike):
        //do something
        break;

    case typeof(Unicycle):
        //do something
        break;

    case default:
        break;
}
Run Code Online (Sandbox Code Playgroud)

VS

   Type myType = myObject.GetType();

   if (myType == typeof(Car)){
            //do something
   }

   else if (myType == typeof(Bike)){
            //do something
   }

   else if (myType == typeof(Unicycle)){
            //do something
   }
   else{

   }
Run Code Online (Sandbox Code Playgroud)

performance if-statement switch-statement

59
推荐指数
3
解决办法
17万
查看次数

效率:切换if语句的语句

PMD 告诉我

少于3个分支的交换机效率低,请使用if语句.

这是为什么?为什么3?他们如何定义效率?

java pmd

29
推荐指数
3
解决办法
2346
查看次数

标签 统计

if-statement ×2

performance ×2

switch-statement ×2

c# ×1

java ×1

pmd ×1