请教如下 C语言哪个 执行效率高?

[复制链接]
2637|9
 楼主| 电子马甲 发表于 2010-5-8 11:09 | 显示全部楼层 |阅读模式
switch(MenuGrade) //读取菜单状态
  {
     case 0x01: menu0();  //;0级菜单
       break;
     case 0x02: menu1();   //;1级菜单
       break;                                                  
     case 0x04: menu2();   //;2级菜单
       break;   
     case 0x08: menu3();  //;3级菜单
       break;                                 
     case 0x10: menu4();  //;4级菜单
       break;
     case 0x20: menu5();   //;5级菜单
       break;
     case 0x40: menu6();//;6级菜单
       break;
     case 0x80: menu7();   //;7级菜单
       break;
     case 0x100: menu8();      //;8级菜单
       break;
     default:
       break;
  }  
  
  if(MenuGrade&0x01)menu0();  //;0级菜单
  if(MenuGrade&0x02)menu1();   //;1级菜单
  if(MenuGrade&0x04)menu2();   //;2级菜单  
  if(MenuGrade&0x08)menu3();  //;3级菜单
  if(MenuGrade&0x10)menu4();  //;4级菜单
  if(MenuGrade&0x20)menu5();   //;5级菜单
  if(MenuGrade&0x40)menu6();//;6级菜单
  if(MenuGrade&0x80)menu7();   //;7级菜单
  if(MenuGrade&0x100)menu8();     //;8级菜单
 楼主| 电子马甲 发表于 2010-5-8 11:09 | 显示全部楼层
switch(MenuGrade) //读取菜单状态
  {
     case 0x01: menu0();  //;0级菜单
       break;
     case 0x02: menu1();   //;1级菜单
       break;                                                  
     case 0x04: menu2();   //;2级菜单
       break;   
     case 0x08: menu3();  //;3级菜单
       break;                                 
     case 0x10: menu4();  //;4级菜单
       break;
     case 0x20: menu5();   //;5级菜单
       break;
     case 0x40: menu6();//;6级菜单       
       break;
     case 0x80: menu7();   //;7级菜单       
       break;
     case 0x100: menu8();      //;8级菜单       
       break;
     default:
       break;
  }  
  
  if(MenuGrade&0x01)menu0();  //;0级菜单
  if(MenuGrade&0x02)menu1();   //;1级菜单
  if(MenuGrade&0x04)menu2();   //;2级菜单  
  if(MenuGrade&0x08)menu3();  //;3级菜单
  if(MenuGrade&0x10)menu4();  //;4级菜单       
  if(MenuGrade&0x20)menu5();   //;5级菜单
  if(MenuGrade&0x40)menu6();//;6级菜单       
  if(MenuGrade&0x80)menu7();   //;7级菜单
  if(MenuGrade&0x100)menu8();     //;8级菜单
 楼主| 电子马甲 发表于 2010-5-8 11:17 | 显示全部楼层
用的 CM3 内核
epsmc 发表于 2010-5-8 14:28 | 显示全部楼层
当然散转快。
ejack 发表于 2010-5-8 16:56 | 显示全部楼层
LZ举的两个例子不等价
没法比
wangxingwu-jlu 发表于 2010-5-8 19:26 | 显示全部楼层
感觉用函数指针最快
李冬发 发表于 2010-5-8 21:51 | 显示全部楼层
要看编译器厂家,这个是谁都没法控制的。
zq1987731 发表于 2010-5-9 10:43 | 显示全部楼层
两种方法不等价,前者只能执行其中特定一项菜单功能
后者...如果给它个0xFFFF作为参数...................
因此对于“聪明的编译器”而言,对后者的处理不会“自作聪明”
那么如果是同样的输入参数,明显前者更快
buqibushe 发表于 2010-5-10 09:08 | 显示全部楼层
你可以编译之后,看汇编程序,,
有些编译器用散转的,可能跟IF效果是一样,也要判断
zc3909 发表于 2010-5-10 16:50 | 显示全部楼层
跟编译器有关
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

63

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部