Heim > Backend-Entwicklung > Golang > Leere Struktur vs. leere Schnittstelle in Go Maps: Was ist speichereffizienter?

Leere Struktur vs. leere Schnittstelle in Go Maps: Was ist speichereffizienter?

Patricia Arquette
Freigeben: 2024-12-18 19:34:10
Original
955 Leute haben es durchsucht

Empty Struct vs. Empty Interface in Go Maps: Which is More Memory Efficient?

Überlegungen zur Speichereffizienz: Leere Schnittstelle vs. leere Struktur in Karten

Man kann sich über den Unterschied zwischen der Verwendung einer leeren Schnittstelle und einer leeren Schnittstelle wundern struct als Wert in einer Karte, wenn Sie versuchen, eine Menge in Go zu emulieren. Schauen wir uns die Unterschiede in der Speichernutzung an, die sich aus dieser Wahl ergeben.

Berücksichtigen Sie die folgenden Typen:

type MyType uint8
Nach dem Login kopieren

Um einen Satz zu simulieren, könnte man das folgende Konstrukt verwenden:

map[MyType]interface{}
Nach dem Login kopieren

Es ist jedoch erwähnenswert, dass man stattdessen auch eine leere Struktur verwenden kann:

map[MyType]struct{}
Nach dem Login kopieren

Der Hauptvorteil Der Vorteil der Verwendung einer leeren Struktur liegt in der geringeren Speichernutzung im Vergleich zu einer leeren Schnittstelle. Das folgende Beispiel zeigt diesen Unterschied:

package main

import (
    "fmt"
    "unsafe"
)

func main() {
    var s struct{}
    fmt.Println(unsafe.Sizeof(s))
    var i interface{}
    fmt.Println(unsafe.Sizeof(i))
}
Nach dem Login kopieren

Ausgabe (Bytes für 32-Bit-Architektur):

0
8
Nach dem Login kopieren

Ausgabe (Bytes für 64-Bit-Architektur):

0
16
Nach dem Login kopieren

Wie die Ergebnisse zeigen, belegt eine leere Struktur null Bytes Speicher, während eine leere Schnittstelle entweder 8 oder 16 Bytes belegt abhängig von der Architektur.

Wenn daher die Speichereffizienz eine entscheidende Überlegung ist, ist die Entscheidung für eine leere Struktur als Wert in Ihrer Karte eine kluge Wahl.

Das obige ist der detaillierte Inhalt vonLeere Struktur vs. leere Schnittstelle in Go Maps: Was ist speichereffizienter?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage