Powiel możliwe:
What is the relative performance difference of if/else versus switch statement in Java?Dlaczego pojedynczy "jeśli" wolniejszy niż "przełącznik"?
Biorąc pod uwagę następujące dwa sposoby:
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;
}
badanie pokazuje, że switch
wykonuje nieznacznie szybciej (1,4 nanosekundy za połączenia na moim komputerze) niż wersja if
.
Zawsze wierzył, że korzyści z przełącznikiem nie kopać, aż przynajmniej kilka ifs
można by uniknąć,
Dlaczego switch
szybciej niż jednym if
?
Czy wiesz, jak wyglądają skompilowane? Może znajdziesz tam odpowiedź. – user1306322
@ user1306322- Trzeba by spojrzeć jeszcze głębiej, aby zbadać, w jaki sposób JVM interpretuje lub kompiluje ten bajt. Pierwszy kod prawdopodobnie użyje instrukcji 'lookupswitch' lub' tableswitch', podczas gdy drugi użyje normalnych skoków. Wszystko zależy od JVM, aby zapewnić ich szybką pracę. – templatetypedef
Czy mógłbyś opublikować swój kod testu porównawczego? –