c++ - 避免 Switch 语句中的分支操作

标签 c++ optimization switch-statement

<分区>

不是让 switch 语句在一个分支又一个分支之间迭代运行,是否有办法让程序集在数组中的列表中查找 goto 语句?还是这通常在编译器中进行了优化?

这样的优化将极大地帮助具有常量值的大型 switch 语句。

例如:

switch(test) {
case 1:
// Do something
break;
case 2:
// Do something
break;
}

“优化”:

action_link[] = {action_1, action_2};
goto action_link[test];

action_1:
// Do Something
action_2:
// Do Something

最佳答案

编译器将根据您的优化设置及其关于什么可能构成良好跳转表的试探法为您做出此决定。

在许多简单的情况下,编译器可能会决定一个简单的测试和跳转链会比等效的跳转表更快或更小。

关于c++ - 避免 Switch 语句中的分支操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30836317/

相关文章:

c++ - 错误 : Cannot add two pointers

optimization - 寻找一种有效的结构来检查哪些圆圈包含一个点

powershell - Powershell开关一对多关联

c++ - clang: error: linker command failed with exit code 1 (使用 -v 查看调用) MINIX3

c++ - 如果不存在则定义一个类型

optimization - SEO:正常链接旁边的 nofollow 链接

javascript - 我想在用户等待时播放警报中的响铃声音

c# - 如果 C# 不是可选的,为什么它会中断?

c++ - Omnet++ 错误在子类中设置参数并在另一个子类中调用它

jquery - 我可以简化/优化这个 Jquery 代码吗?