下面给出两个方法:
public static int useSwitch(int i) {
switch (i) {
case 0:
return 1;
default:
return 0;
}
}
public static int useIf(int i) {
if (i == 0)
return 1;
return 0;
}
测试表明,在我的计算机上,switch
的执行速度略快于 if
版本,每次调用快 1.4 纳秒。
我一直以为只有避免几个 if
才能发挥 switch
的好处,
为什么 switch
比单个 if
更快?
lookupswitch
或tableswitch
指令,而第二段则会使用普通跳转。让它们快速运行完全取决于JVM。 - templatetypedefnanoTime()
对于for (int i = 0; i < 999999; i++) x += useIf(i)
(x
被断言)。 - Bohemian