前言:
分支数
小于三时,else if 效率更高
等于三时,效率近乎相同
大于三时,switch case效率更高
if与switch小于三次对比:
package Action; public class HelloWorld { static int count=10000000; public static void main(String[] args) { if_test(); System.gc();//清理一下 switch_test(); } public static void if_test() { long start = System.currentTimeMillis(); for (int i = 0; i <count; i++) { if(i==(10000000-1)) { System.out.println("if判断一千万次"); } } long end = System.currentTimeMillis(); System.out.println("if判断一千万次"+(end-start)+"毫秒"); } public static void switch_test() { long start = System.currentTimeMillis(); for (int i = 0; i <count; i++) { switch(i) { case 10000000-1:System.out.println("switch判断一千万次");break; } } long end = System.currentTimeMillis(); System.out.println("switch判断一千万次"+(end-start)+"毫秒"); } }
区别还算明显吧,量少,可以用一亿试试。
package Action; public class HelloWorld { static int count=100000000; public static void main(String[] args) { if_test(); System.gc();//清理一下 switch_test(); } public static void if_test() { long start = System.currentTimeMillis(); for (int i = 0; i <count; i++) { if(i==(100000000-1)) { System.out.println("if判断一亿次"); } } long end = System.currentTimeMillis(); System.out.println("if判断一亿次"+(end-start)+"毫秒"); } public static void switch_test() { long start = System.currentTimeMillis(); for (int i = 0; i <count; i++) { switch(i) { case 100000000-1:System.out.println("switch判断一亿次");break; } } long end = System.currentTimeMillis(); System.out.println("switch判断一亿次"+(end-start)+"毫秒"); } }
三个的时候其实还是if快一些。
这就很明显了。
if与switch等于三次对比:
package Action; public class HelloWorld { static int count=10000000; public static void main(String[] args) { switch_test(); if_test(); } public static void if_test() { long start = System.currentTimeMillis(); for (int i = 0; i <count; i++) { if(i==(10000000-1)) { System.out.println("if判断一千万次"); }else if(i==-1) { }else if(i==-2){ } } long end = System.currentTimeMillis(); System.out.println("if判断一千万次"+(end-start)+"毫秒"); } public static void switch_test() { long start = System.currentTimeMillis(); for (int i = 0; i <count; i++) { switch(i) { case 10000000-1:System.out.println("switch判断一千万次");break; case -1:break; case -2:break; } } long end = System.currentTimeMillis(); System.out.println("switch判断一千万次"+(end-start)+"毫秒"); } }
三个的时候其实还是if快一些。