if与switch区别

来源:互联网 发布:java中的变量有哪些 编辑:程序博客网 时间:2024/05/24 15:37


 private static void testSitchAndIf(){
  long testCount = 9000000000L;
  int flag = 20;
  long time1 = System.currentTimeMillis();
  for(long i = 0; i < testCount; i++){
   switch(flag){
   case 1: break;
   case 2: break;
   case 3: break;
   case 4: break;
   case 5: break;
   case 6: break;
   case 7: break;
   case 8: break;
   case 9: break;
   case 10: break;
   case 11: break;
   case 12: break;
   case 13: break;
   case 14: break;
   case 15: break;
   case 16: break;
   case 17: break;
   case 18: break;
   case 19: break;
   case 20: break;
   case 21: break;
   case 22: break;
   case 23: break;
   case 24: break;
   case 25: break;
   case 26: break;
   case 27: break;
   case 28: break;
   case 29: break;
   case 30: break;
   case 31: break;
   case 32: break;
   case 33: break;
   case 34: break;
   case 35: break;
   case 36: break;
   case 37: break;
   case 38: break;
   case 39: break;
   case 40: break;
   case 41: break;
   }
  }
  long time2 = System.currentTimeMillis();
  for(long i = 0; i < testCount; i++){
   if(flag == 1){}
   else if(flag == 2){}
   else if(flag == 3){}
   else if(flag == 4){}
   else if(flag == 5){}
   else if(flag == 6){}
   else if(flag == 7){}
   else if(flag == 8){}
   else if(flag == 9){}
   else if(flag == 10){}
   else if(flag == 11){}
   else if(flag == 12){}
   else if(flag == 13){}
   else if(flag == 14){}
   else if(flag == 15){}
   else if(flag == 16){}
   else if(flag == 17){}
   else if(flag == 18){}
   else if(flag == 19){}
   else if(flag == 20){}
   else if(flag == 21){}
   else if(flag == 22){}
   else if(flag == 23){}
   else if(flag == 24){}
   else if(flag == 25){}
   else if(flag == 26){}
   else if(flag == 27){}
   else if(flag == 28){}
   else if(flag == 29){}
   else if(flag == 30){}
   else if(flag == 31){}
   else if(flag == 32){}
   else if(flag == 33){}
   else if(flag == 34){}
   else if(flag == 35){}
   else if(flag == 36){}
   else if(flag == 37){}
   else if(flag == 38){}
   else if(flag == 39){}
   else if(flag == 40){}
   }
  long time3 = System.currentTimeMillis();
  System.out.println("loop count:" + testCount);
  System.out.println("if consume time:" + (time2 - time1));
  System.out.println("switch consume time:" + (time3 - time2));
 }


result:

loop count:9000000000
if consume time:6568
switch consume time:5881


analyse:

参照上面的运行结果,switch与if的效率基本没有什么差别。

要具体查看switch与if的区别就需要查看编译之后的代码,具体分析。

0 0
原创粉丝点击