If和switch哪个效率高?

if在汇编判断主要是通过运算

switch有几种情况:

  • 分支大于3时,有序差值小的情况是通过(x8)查地址表来判断(在编译的时候会生成一个表(跳转表每个地址四个字节))效率比if高很多
  • 分支大于3时,无序差值很大编译器会在效率还是内存进行取舍,是时间换空间 还是空间换时间(如果有序差值稍大,它会跳过的分支地址填充default的地址,拿空间换换时间)
  • 分支小于3和if else一样运行判断

所以说哪个效率高?看判断的分支情况来决定

 

具体的if和switch看下面2篇文章分析

汇编If(九)

汇编Switch(十一)

发表回复

电子邮件地址不会被公开。 必填项已用*标注

Protected with IP Blacklist CloudIP Blacklist Cloud