【发布时间】:2010-10-20 13:11:35
【问题描述】:
我是前 Pascal 人,目前正在学习 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;
}
哪个更快?
我在问,因为我的程序具有类似的结构(很多很多“else if”语句)。 我应该把它们变成开关吗?
【问题讨论】:
-
我不得不指出,如果你的代码有很多这样的结构,你可能在设计中没有充分利用多态性。
-
切换速度更快,但除非您对紧密循环进行超级优化,否则它没有任何意义。什么是 37 纳秒 vs 42 纳秒(组成数字)?
-
我想知道在案例级别使用逻辑时这有什么不同,例如(伪)
switch(true) case a==0; case a>0; case a<0;等 -
@Jacksonkr Java 不允许切换
boolean类型的值。此外,case表达式必须是常量。
标签: c# performance if-statement switch-statement