W pętli Java, czy bardziej efektywne jest użycie flagi boolean
zamiast instrukcji if
?Czy bardziej efektywne jest użycie flagi lub klauzuli "if"?
Spójrz na te dwa fragmenty kodu.
Korzystanie flagę:
public boolean isSomethingForAnyone() {
boolean flag = false;
for (Item item : listOfItems) {
flag = flag || item.isSomething();
}
return flag;
}
Korzystanie oświadczenie if
:
public boolean isSomethingForAnyone() {
for (Item item : listOfItems) {
if (item.isSomething())
return true;
}
return false;
}
metody ze stwierdzeniem if
jest oczywiście szybciej, jeśli isSomething()
powrót true
na pierwszej iteracji. Ale czy jest średnio szybszy, czy rozgałęzianie powoduje spowolnienie na tyle, że jest wolniejsze? Czy sytuacja jest inna, jeśli pętla jest szybsza? Tutaj użyłem pętli for-each dla uproszczenia, które moim zdaniem jest wolniejsze niż iterowanie przez tablicę z licznikiem.
dla każdego nie jest wolniejsza niż zwykła pętla for. – JNL
Najpierw zawsze będzie iterować po wszystkich elementach; sekunda zatrzyma się, gdy jeden element jest prawdziwy. –