打印
[软件资料]

switch语句vs查找表

[复制链接]
444|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
LOVEEVER|  楼主 | 2024-3-5 18:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

Switch的应用场景如下:

调用一到多个函数
设置变量值或者返回一个值
执行一到多个代码片段
如果case标签很多,在switch的前两个使用场景中,使用查找表可以更高效的完成。例如下面的两种转换字符串的方式:

char * Condition_String1(int condition) {
  switch(condition) {
     case 0: return "EQ";
     case 1: return "NE";
     case 2: return "CS";
     case 3: return "CC";
     case 4: return "MI";
     case 5: return "PL";
     case 6: return "VS";
     case 7: return "VC";
     case 8: return "HI";
     case 9: return "LS";
     case 10: return "GE";
     case 11: return "LT";
     case 12: return "GT";
     case 13: return "LE";
     case 14: return "";
     default: return 0;
  }
}

char * Condition_String2(int condition) {
   if ((unsigned) condition >= 15) return 0;
      return
      "EQ\0NE\0CS\0CC\0MI\0PL\0VS\0VC\0HI\0LS\0GE\0LT\0GT\0LE\0\0" +
       3 * condition;
}

第一个程序需要240 bytes,而第二个仅仅需要72 bytes。

使用特权

评论回复
沙发
huquanz711| | 2024-3-5 19:34 | 只看该作者
难的是实际应用过程中很难找到这种映射关系。

使用特权

评论回复
板凳
星辰大海不退缩| | 2024-3-11 09:27 | 只看该作者
如果case标签很多,在switch的前两个使用场景中,使用查找表可以更高效的完成。

使用特权

评论回复
地板
OKAKAKO| | 2024-3-11 19:00 | 只看该作者
程序优化确实是一件非常重要的任务

使用特权

评论回复
5
小小蚂蚁举千斤| | 2024-3-19 12:32 | 只看该作者
如果case标签很多,在switch的前两个使用场景中,使用查找表可以更高效的完成,高效的运行方式很重要

使用特权

评论回复
6
小夏天的大西瓜| | 2024-3-19 12:51 | 只看该作者
如果case标签很多,在switch的前两个使用场景中,使用查找表可以更高效的完成

使用特权

评论回复
7
中国龙芯CDX| | 2024-3-21 15:10 | 只看该作者
使用查找表法在case标签很多的switch使用场景中

使用特权

评论回复
8
jf101| | 2024-3-22 12:09 | 只看该作者
这种映射关系是不是需要自己进行提前数据结构规划?

使用特权

评论回复
9
szt1993| | 2024-3-25 15:30 | 只看该作者
case标签很多,使用查找表可以更高效的完成

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

291

主题

1963

帖子

4

粉丝