日期:2014-05-20  浏览次数:20705 次

请教为什么switch的效率要比if else 高?
请教为什么switch的效率要比if else 高?

希望从编译原理的角度分析 谢谢哇

------解决方案--------------------
switch可以进行跳转优化,java中对switch有两种处理方式,生成不同的jvm指令,一是tableswitch,一个是lookupswitch.
对于case的分支比较密集的情况,如
Java code

public class Test {

    public static void main(String[] args) {
        int i = 3;
        switch (i) {
            case 0:
                System.out.println("0");
                break;
            case 1:
                System.out.println("1");
                break;
            case 3:
                System.out.println("3");
                break;
            case 5:
                System.out.println("5");
                break;
            case 10:
                System.out.println("10");
                break;
            case 13:
                System.out.println("13");
                break;
            case 14:
                System.out.println("14");
                break;
        default:
        System.out.println("default");
                break;
        }


    }
}