switch与ifelse效率

来源:互联网 发布:淘宝助理上传宝贝步骤 编辑:程序博客网 时间:2024/04/25 22:39

前言

资料显示switch较if else执行效率高。

区别

switch与if else根本区别在switch生成一跳转表指示实际case分支地址,该跳转表索引号与switch变量值相等。从而switch不像if else遍历条件分支直到命中条件,而只需访问对应索引号表项到达对应分支。

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

总结

switch似空间换时间

  • 分支较多用switch效率高。因switch随机访问,即确定选择值后直接跳转对应分支,但if else遍历直到找到符合条件分支。故switch效率比if else高。

  • switch占用代码空间较多,因需生成跳表,特别当case常量分布范围很大但实际有效值较少,switch空间利用率变得很低。

  • switch只能处理case为常量情况。故switch在常量选择分支比if else效率高,但if else可应用更多场合,较灵活。

原创粉丝点击