Questa domanda è particolarmente interessante quando il blocco if
restituisce terminando così il metodo. Si applica anche direttamente al modo in cui i comparatori in Java funzionano.
Ho quindi eseguire ciascun metodo (sotto) 250.000.000 volte ei risultati sono i seguenti:
two values if/else - 6.43 millis
three values if/else/if - 8.66 millis
three values if/if - 9.01 millis
Mentre il caso peggiore prende 1,4 volte più lungo di quello migliore farlo notare che questo è la somma totale di iterare ciascuno di questi metodi 250 milioni di volte. Supponendo che ci vorrebbe 100ms per un ritardo percepito dall'uomo e che la differenza peggiore/migliore è di 2,58 millis implicherebbe che avresti bisogno di quasi mille miliardi di iterazioni per percepire la differenza tra diversi metodi.
Riassumendo in su: uso if-else
è uno di quei casi in cui l'opzione più veloce è anche quella con più leggibilità e meno soggetto a errori.
// methods used to measure difference between if and if/else
/** equality is not important **/
private static int comparatorOfIfElse(int a, int b) {
if(a < b) return -1;
else return 1;
}
/** equality is taken into account using if/else **/
private static int comparatorOfIfElseIf(int a, int b) {
if(a < b) return -1;
else if(a > b) return 1;
return 0;
}
/** equality is taken into account using only if **/
private static int comparatorOfIf(int a, int b) {
if(a < b) return -1;
if(a > b) return 1;
return 0;
}
Non conosco la velocità di elaborazione, ma se ne hai così tanti se blocchi, forse dovresti prendere in considerazione l'utilizzo di un'istruzione switch. Soprattutto per qualcosa come i giorni di una settimana. –
C'è un enorme cambiamento di funzione quando si passa da molte istruzioni if a una istruzione if-elseif. Pensa a cosa fa realmente il tuo codice. –