„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Beeinflusst die Kurzschlussauswertung von Go die Leistung in bedingten Anweisungen?

Beeinflusst die Kurzschlussauswertung von Go die Leistung in bedingten Anweisungen?

Veröffentlicht am 22.12.2024
Durchsuche:836

Does Go's Short-Circuit Evaluation Impact Performance in Conditional Statements?

Kurzschlussauswertung in Go

In der Programmierung ist die Kurzschlussauswertung eine Technik, bei der ein Ausdruck nur dann ausgewertet wird, wenn es notwendig ist, das Ergebnis der umgebenden Anweisung zu bestimmen . Dies wird häufig in bedingten Anweisungen verwendet, bei denen die Auswertung mehrerer Bedingungen nicht erforderlich ist, wenn eine frühere Bedingung bereits falsch ist.

Go implementiert die Kurzschlussauswertung für logische Operatoren (&& und ||), ähnlich wie bei vielen anderen Programmierungen Sprachen. Das bedeutet, dass der Interpreter in einer if-Anweisung die Bedingungen von links nach rechts auswertet und stoppt, sobald das Ergebnis bekannt ist.

In Bezug auf die bereitgestellten Codebeispiele hat die Auswertungsreihenfolge der Bedingungen keinen Einfluss auf die Leistung des Programms. In Go verhalten sich beide Codefragmente gleich. Der Compiler wertet die Ausdrücke von links nach rechts aus und schließt die Auswertung kurz, sobald er das Ergebnis bestimmt.

Um dies zu demonstrieren, betrachten Sie den folgenden Code:

package main

import "fmt"

func main() {
    var r *http.Request
    queries := make(map[string][]string)

    if r == nil || len(queries) == 0 || !isValidQueryParams(&queries) {
        fmt.Println("Invalid querystring")
    }
}

Auch wenn isValidQueryParams mehr Overhead hat als r == nil und len(queries) == 0, wertet der Compiler die Ausdrücke der Reihe nach aus und schließt sie kurz, sobald das Ergebnis klar ist. Daher gibt es keinen Leistungsunterschied zwischen den beiden Codefragmenten in Ihrem Beispiel.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3