论坛» 嵌入式开发» MCU

两段完成同样功能的简单C代码

工程师
2008-03-25 16:11 1楼
//y=f(x);
如下:
x=0,1,2,3,4 非常频繁,大家的经验或判断code1和code2 哪段代码应当运行快一些,或一样.
int f(int x)
{
...
}

//code1
switch(x) {
case 0:
y=0;
break;
case 1:
y=1;
break;
case 2:
y=6;
break;
case 3:
y=2;
break;
case 4:
y=8;
break;
default:
y=f(x);
break;
}

//code2

if(x==0)
{
y=0;
}
else if(x==1)
{
y=1;
}
else if(x==2)
{
y=6;
}
else if(x==3)
{
y=2;
}
else if(x==4)
{
y=8;
}
else
{
y=f(x);
}
助工
2008-03-25 17:55 2楼
switch快一些
菜鸟
2008-03-25 22:30 3楼
SWITCH快些。 ;- )
菜鸟
2008-03-26 21:41 4楼
根据出现的频繁度,可以考虑把出现多的x放在前面,少的放在后面,
或者另一种很呆但有效的办法,判x是否为0 to 4.是就直接查表得到y,否则就调用f(x).
呵呵.
菜鸟
2008-03-27 16:40 5楼
if else
菜鸟
2008-05-21 11:18 6楼

产生汇编代码比较最直接.

共6条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册]