许多情况下的交换机优化可确保任何情况下的访问时间均等 (C++)

Pet*_*uza 8 c c++ optimization switch-statement

我已经在这里看到了特定语言的答案,关于使用跳转表优化超过5个案例的开关,以保证任何情况下的持续访问时间.
是这样的C/C++?
它特别适用于gcc吗?对于视觉工作室?
如果没有,按发生频率顺序对案例进行排序有帮助吗?

Jer*_*fin 11

该标准不保证如何实现switch语句.我从来没有见过编译器生成哈希表,不过会产生一个跳转表.除非我的记忆比平常更糟糕,否则当病例足够密集时(对于"足够"的不同值),VS和gcc都可以产生跳转表.不幸的是,按发生频率排序几乎是不可能的(或者甚至必须弄明白) - 它不仅在编译器之间,而且在同一编译器的不同版本之间也不同.