5 Stimmen

Optimierung der Bedingungen der if-Anweisung

Ich habe eine if-Anweisung mit zwei Bedingungen (getrennt durch einen OR-Operator), eine der Bedingungen deckt +70% der Situationen und nimmt weit weniger Zeit zu verarbeiten/ausführen als die zweite Bedingung, so im Interesse der Geschwindigkeit, die ich nur die zweite Bedingung verarbeitet werden soll, wenn die erste Bedingung zu falsch ausgewertet wird.

Wenn ich die Bedingungen so anordne, dass die erste Bedingung (die schnellere) in der if-Anweisung zuerst erscheint, wird dann in den Fällen, in denen diese Bedingung erfüllt ist und als wahr bewertet wird, die zweite Bedingung überhaupt verarbeitet?

if ( (condition1) | (condition2) ){
  // do this
}

oder müsste ich zwei if-Anweisungen verschachteln, um die zweite Bedingung nur dann zu prüfen, wenn die erste als falsch bewertet wird?

if (condition1){
  // do this
}else if (condition2){
  // do this
}

Ich arbeite in PHP, gehe aber davon aus, dass dies sprachunabhängig sein kann.

0voto

Dillie-O Punkte 28749

VB.net hat zwei wunderbare Ausdrücke namens "OrElse" und "AndAlso"

OrElse wird sich selbst kurzschließen, wenn es das erste Mal eine True-Auswertung erreicht, und den gewünschten Code ausführen.

If FirstName = "Luke" OrElse FirstName = "Darth" Then
   Console.Writeline "Greetings Exalted One!"
End If

AndAlso wird sich selbst kurzschließen, wenn es das erste Mal eine Falschauswertung vornimmt und den Code innerhalb des Blocks nicht auswertet.

If FirstName = "Luke" AndAlso LastName = "Skywalker" Then
   Console.Writeline "You are the one and only."
End If

Ich finde beides hilfreich.

1 Stimmen

Das ist genau das, was || und && in den meisten anderen Sprachen auch tun.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X