Joh*_*Doe 1 c switch-statement
我有5个案例的切换案例陈述。这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;
}
Run Code Online (Sandbox Code Playgroud)
切换情况每10毫秒在实时系统上执行一次。将有哪些(或没有任何一种)最快的方式来对照这些案例陈述?
你目前不应该编译代码:(2 || 7 || 8 || 9 || 12 || 14 || 18 || 19 || 22 || 23 || 25)是1在C,这就是重复的情况下标签。
编译器将优化更正
case 2: case 7: case 8: ... case 25:
CallSomeFunction();
break;
Run Code Online (Sandbox Code Playgroud)
具有出色的熟练度(可能带有跳转表)。如有疑问,请检查生成的汇编代码。它可能比使用设置的函数指针数组要快,以便可以编写SomeFunctions[Number]();。
这些方法中的任何一种都可能比编写将2、7、8,...,25转换为常数表达式的函数更快。
就您而言,尽管您可以写
default:
CallSomeFunction();
Run Code Online (Sandbox Code Playgroud)