其实来至于segmentfalut上回答的一个问题
基于不知道这个网站能否活下去,暂时把答案搬家到这里。
在大多数情况下,switch的性能不会比if else低。
在某些特定情况下,编译器能对switch进行优化。比如说:
1. 不按顺序比较,而是构造一个二分查找树(binary decision tree), 这样子比较的平均次数就会下降。
2. 可以做个跳转表(jump table)这样子就不许要任何比较了。比如如下的代码。
int main(int argc, char* argv[]){ int j = 0; int n; cin>>n; switch(n) { case 1: j = 1; break; case 2: j = 2; break; case 3: j = 3; break; case 4: j = 5; break; default:j = 6; } cout<<j<<endl; return 0;}
在VS2008下生成的代码就使用了jump table
原文链接: https://www.cnblogs.com/aoaoblogs/archive/2011/07/06/2099036.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/28192
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!