«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Влияет ли короткая оценка Go на производительность условных операторов?

Влияет ли короткая оценка Go на производительность условных операторов?

Опубликовано 22 декабря 2024 г.
Просматривать:879

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

Краткое вычисление в Go

В программировании короткое вычисление — это метод, при котором выражение вычисляется только в том случае, если необходимо определить результат окружающего его оператора. . Это часто используется в условных операторах, где оценка нескольких условий не требуется, если предыдущее условие уже ложно.

Go реализует укороченную оценку логических операторов (&& и ||), как и во многих других программах. языки. Это означает, что в операторе if интерпретатор будет оценивать условия слева направо и останавливаться, как только станет известен результат.

Что касается предоставленных примеров кода, порядок оценки условий не влияет на производительность программы. В Go оба фрагмента кода будут вести себя одинаково. Компилятор вычисляет выражения слева направо и завершает вычисление, как только определит результат.

Чтобы продемонстрировать это, рассмотрите следующий код:

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

Несмотря на то, что isValidQueryParams имеет больше накладных расходов, чем r == nil и len(queries) == 0, компилятор вычислит выражения по порядку и сократит их, как только результат станет ясен. Таким образом, между двумя фрагментами кода в вашем примере нет разницы в производительности.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3