Sobes.tech
Back to questions
Middle+
3

Что будет работать быстрее — дженерики или пустые интерфейсы?

Companies where asked
МВидеоМВидео

Answer from AI

sobes.tech AI

В Go производительность дженериков и пустых интерфейсов (interface{}) зависит от конкретного сценария использования.

  • Дженерики позволяют компилировать типобезопасный код, где типы известны на этапе компиляции, что может привести к более эффективному машинному коду и меньшему количеству преобразований типов во время выполнения.

  • Пустой интерфейс (interface{}) — это динамический тип, который требует дополнительной информации о типе и может приводить к операциям приведения типов во время выполнения, что потенциально медленнее.

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

Пример:

func SumIntsOrFloats[T int | float64](slice []T) T {
    var sum T
    for _, v := range slice {
        sum += v
    }
    return sum
}

Здесь компилятор генерирует код для конкретных типов, что эффективнее, чем работа с interface{} и приведениями типов.