"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > A avaliação de curto-circuito de Go afeta o desempenho em declarações condicionais?

A avaliação de curto-circuito de Go afeta o desempenho em declarações condicionais?

Publicado em 2024-12-22
Navegar:692

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

Avaliação de curto-circuito em Go

Na programação, avaliação de curto-circuito é uma técnica em que uma expressão só é avaliada se for necessário determinar o resultado da instrução circundante . Isso é frequentemente usado em declarações condicionais, onde a avaliação de múltiplas condições é desnecessária se uma condição anterior já for falsa.

Go implementa avaliação de curto-circuito para operadores lógicos (&& e ||), semelhante a muitas outras programações línguas. Isso significa que em uma instrução if, o intérprete avaliará as condições da esquerda para a direita e parará assim que o resultado for conhecido.

Em relação aos exemplos de código fornecidos, a ordem de avaliação das condições não afeta o desempenho do programa. No Go, ambos os trechos de código se comportarão da mesma maneira. O compilador avaliará as expressões da esquerda para a direita e causará um curto-circuito na avaliação assim que determinar o resultado.

Para demonstrar isso, considere o seguinte código:

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")
    }
}

Mesmo que isValidQueryParams tenha mais sobrecarga do que r == nil e len(queries) == 0, o compilador avaliará as expressões em ordem e entrará em curto-circuito assim que o resultado for claro. Portanto, não há diferença de desempenho entre os dois trechos de código no seu exemplo.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3