码迷,mamicode.com
首页 > 其他好文 > 详细

if...else与switch...case的执行效率问题

时间:2017-01-21 10:55:13      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:处理   生成   访问   ase   back   switch   round   目的   str   

switch语句比if else的执行效率要高

 switch...case与if...else的根本区别

    switch...case会生成一个跳转表来指示实际的case分支的地址,而这个跳转表的索引号与switch变量的值是相等的。从而,switch...case不用像if...else那样遍历条件分支直到命中条件,而只需访问对应索引号的表项从而到达定位分支的目的。

具体地说,switch...case会生成一份大小(表项数)为最大case常量+1的跳表,程序首先判断switch变量是否大于最大case 常量,若大于,则跳到default分支处理;否则取得索引号为switch变量大小的跳表项的地址(即跳表的起始地址+表项大小*索引号),程序接着跳到此地址执行,到此完成了分支的跳转。

if...else与switch...case的执行效率问题

标签:处理   生成   访问   ase   back   switch   round   目的   str   

原文地址:http://www.cnblogs.com/paul-du/p/6336514.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!