c++ - 许多情况下的开关优化保证任何情况下均等的访问时间? ( C++ )

标签 c++ c optimization switch-statement

我在这里看到了针对特定语言的答案,关于超过 5 种情况的开关使用跳转表进行了优化,以保证任何情况下的恒定访问时间。
C/C++ 也是这样吗?
它特别适用于 gcc 吗?用于 Visual Studio ?
如果不是,按发生频率的顺序对案例进行排序会有帮助吗?

最佳答案

标准不保证 switch 语句将如何实现。我从未见过编译器生成哈希表,尽管有相当一部分会生成跳转表。除非我的内存力比平时更差,否则 VS 和 gcc 都可以在案例足够密集时生成跳转表(对于“足够”的不同值)。不幸的是,几乎不可能说(甚至不一定弄清楚)按出现频率排序何时会有帮助——不仅在编译器之间不同,甚至在同一编译器的不同版本之间也是不同的。

关于c++ - 许多情况下的开关优化保证任何情况下均等的访问时间? ( C++ ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2129718/

相关文章:

c++ - C++11 中的缩小转换 : what is the "actual value after conversion"?

c - 无效的初始化程序?

使用 libwebsockets 编译 libuv

编译错误 fatal error : sys\types. h : No such file or directory #include <sys\types. h>

mysql - 如何有效地在数据库表中搜索一段文本中子字符串的所有组合?

c++ - 尝试在 C++ 中打印时超出 Unicode 范围

c++ - C/C++ 双指针解引用问题

c++ - 如何在C++中跳到Ofstream对象的下一行

optimization - 剪辑发生在渲染的哪个阶段?

javascript - 如何消除 Javascript 中的重复行?