可能重複:
What is the relative performance difference of if/else versus switch statement in Java?爲什麼單個「if」比「switch」慢?
考慮以下兩種方法:
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
稍快執行(每次通話1.4納秒我的機器上)比if
版本。
我一直認爲,一個交換機的利益並沒有踢,直到至少有幾個ifs
可以避免的,
爲什麼switch
比單if
快?
你知道他們是如何編譯的嗎?也許你可以在那裏找到你的答案。 – user1306322
@ user1306322-您必須更深入地研究JVM如何解釋或編譯該字節碼。第一個代碼可能會使用'lookupswitch'或'tableswitch'指令,而第二個代碼將使用正常的跳轉。所有這些都取決於JVM如何讓它們快速運行。 – templatetypedef
你可以發佈你的基準代碼嗎? –