if在汇编判断主要是通过运算
switch有几种情况:
- 分支大于3时,有序差值小的情况是通过(x8)查地址表来判断(在编译的时候会生成一个表(跳转表每个地址四个字节))效率比if高很多
- 分支大于3时,无序差值很大编译器会在效率还是内存进行取舍,是时间换空间 还是空间换时间(如果有序差值稍大,它会跳过的分支地址填充default的地址,拿空间换换时间)
- 分支小于3和if else一样运行判断
所以说哪个效率高?看判断的分支情况来决定
具体的if和switch看下面2篇文章分析
if在汇编判断主要是通过运算
switch有几种情况:
所以说哪个效率高?看判断的分支情况来决定
具体的if和switch看下面2篇文章分析