Diese Frage ist besonders interessant, wenn der if
Block zurückkehrt und damit die Methode beendet. Es gilt auch direkt für die Funktionsweise von Komparatoren in Java.
Ich habe also jede Methode ausgeführt (unten) 250.000.000 Zeiten und die Ergebnisse sind wie folgt:
two values if/else - 6.43 millis
three values if/else/if - 8.66 millis
three values if/if - 9.01 millis
Während der schlimmsten Fall 1,4 mal länger dauert als die beste Mitteilung machen, dass dies die Gesamtsumme von jeder dieser Methoden 250 Millionen Mal zu wiederholen. Wenn man davon ausgeht, dass ein Mensch 100 ms braucht, um eine Verzögerung wahrzunehmen, und dass der schlimmste/bessere Unterschied 2,58 Millisekunden beträgt, würde dies bedeuten, dass man fast eine Billion (1000 * 1000 Millionen) Iterationen benötigt, um den Unterschied zwischen verschiedenen Methoden zu erkennen.
Fasst it up: Verwendung if-else
es ist einer jener Fälle, in denen die schnellste Option mit mehr Lesbarkeit und weniger fehleranfällig auch derjenige ist.
// 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;
}
Ich weiß nicht über die Verarbeitungsgeschwindigkeit, aber wenn Sie so viele if Blöcke haben, sollten Sie vielleicht eine switch-Anweisung verwenden. Vor allem für so etwas wie die Tage einer Woche. –
Es gibt eine massive Funktionsänderung, wenn von vielen if-Anweisungen zu einer if-elsaf-Anweisung gewechselt wird. Überlege dir, was dein Code wirklich macht. –