switch的优化
来源:互联网 发布:mysql ubunty 编辑:程序博客网 时间:2024/05/23 09:57
一个switch的汇编语句如下: int i= 0; 0040B768 mov dword ptr [ebp-4],0 9: switch ( i ) { 0040B76F mov eax,dword ptr [ebp-4] 0040B772 mov dword ptr [ebp-8],eax 0040B775 cmp dword ptr [ebp-8],0 0040B779 je main+33h (0040b783) 0040B77B cmp dword ptr [ebp-8],1 0040B77F je main+3Eh (0040b78e) 0040B781 jmp main+47h (0040b797) 10: case 0: 11: i++; 0040B783 mov ecx,dword ptr [ebp-4] 0040B786 add ecx,1 0040B789 mov dword ptr [ebp-4],ecx 12: break; 0040B78C jmp main+47h (0040b797) 13: case 1: 14: i--; 0040B78E mov edx,dword ptr [ebp-4] 0040B791 sub edx,1 0040B794 mov dword ptr [ebp-4],edx 15: break; 16: default: 17: break; 18: } 最简单的优化方法是将可能性越大的判断越往前面放。 如果每个case中有大量的工作要做,我们可以选择另外一种方式,是用一个查询表,将每个case中执行的语句写到一个函数,然后根据查询表来选择执行的函数。例: enum type {A, B, C} switch ( getType() ) { case A: ..... case B: ..... case C: ..... default: .... } 可以优化为: int procA(...); int procB(...); int procC(...); /* 建立函数查询表 */ int (*pFunc[])(...) = { procA, procB, procC }; /* 根据查询结果执行相关函数 */ pFunc[ getType() ](...);
- switch的优化
- switch语句的优化
- C#对switch语句的优化
- C#对switch语句的优化
- switch()case:语句的优化
- 编译器对switch case结构的优化
- 编译器对switch,case 的优化
- 如何优化switch语句
- 优化switch 分支
- 复习笔记10 switch 编译器优化的两种方式 和if的效率对比
- C语言优化实例:一种消除嵌套switch-case的巧妙做法
- 仿照苹果的Switch、自定义Switch
- 优化if else 和 switch case 结构
- 使用switch的注意
- Switch接受的类型
- Switch 的应用
- switch 的String参数
- switch的探讨
- 打手机防辐射全攻略
- 大学生学软件必看
- 转: __cdecl __fastcall与 __stdcall
- 求职英语_如何用英语表达“相关经验”
- Solaris 9 disk suite cluster3.1 oracle10g 双机安装
- switch的优化
- 转:c++资源之不完全导引 (全文)
- 求职英语_面试英文须知
- testse
- 《2007年基金组合致富配方》创造100%投资报酬率,帮 你找出关键17檔
- SUN系统管理员常用概念/命令
- Mysql中mysqldump命令使用详解
- Ajax轻松上路
- 《WEB应用测试》笔记(七)