我有5个案例的switch case语句。 这5种情况之一如下:
switch (Number)
{
case 1:
CallSomeFunction1();
break;
case 3:
CallSomeFunction3();
break;
case 4:
CallSomeFunction4();
break;
case (2 || 7 || 8 || 9 || 12 || 14 || 18 || 19 || 22 || 23 || 25):
CallSomeFunction();
break;
case 6:
CallSomeFunction6();
break;
}
切换案例每10毫秒在实时系统上执行一次。 (或有任何一种)最快的方式来对照那些案例陈述?
答案 0 :(得分:5)
您提供的代码不应编译:{{1}}在C语言中是(2 || 7 || 8 || 9 || 12 || 14 || 18 || 19 || 22 || 23 || 25)
,并且是重复的大小写标签。
编译器将优化更正的
1
熟练(可能带有 jump table )。如有疑问,请检查生成的汇编代码。它可能比使用设置的函数指针数组要快,因此您可以编写case 2: case 7: case 8: ... case 25:
CallSomeFunction();
break;
。
这两种方法都可能比编写将2、7、8,...,25转换为常数表达式的函数更快。
尽管您可以写
SomeFunctions[Number]();