Eventuali duplicati:
What is the relative performance difference of if/else versus switch statement in Java?Perché un singolo "se" è più lento di "switch"?
Dati i seguenti due metodi:
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;
}
test mostra che il switch
esegue marginalmente più veloce (1,4 nanosecondi per chiamata sulla mia macchina) rispetto alla versione if
.
Avevo sempre creduto che il beneficio di uno switch non ha calci fino a quando almeno un paio ifs
potrebbero essere evitati,
Perché switch
più veloce di un singolo if
?
Sai come appaiono compilati? Forse puoi trovare la tua risposta lì. – user1306322
@ user1306322- Dovresti cercare in modo ancora più approfondito per indagare su come la JVM stia interpretando o compilando quel bytecode. Il primo codice utilizzerà probabilmente l'istruzione 'lookupswitch' o' tableswitch', mentre il secondo userà i normali salti. Dipende tutto dalla JVM per farli funzionare velocemente. – templatetypedef
Potresti pubblicare il tuo codice di benchmarking? –