Sie können das Go-Testwerkzeug verwenden, um die Größe beliebiger komplexer Datenstrukturen zu messen. Dies ist in dieser Antwort aufgeführt: How to get variable memory size of variable in golang?
Um die Größe einer Karte von make(map[string]int)
erstellt zu messen, verwenden Sie die folgende Benchmark-Funktion:
var x map[string]int
func BenchmarkEmptyMap(b *testing.B) {
for i := 0; i < b.N; i++ {
x = make(map[string]int)
}
}
mit Executing
go test -bench . -benchmem
Das Ergebnis ist:
BenchmarkEmptyMap-4 20000000 110 ns/op 48 B/op 1 allocs/op
So ist die Antwort auf meinem 64-b es Architektur: 48 Bytes.
Wie angedeutet, kann die Größe von der Architektur abhängen. Auch Größe kann auf der Anfangskapazität abhängen Sie make()
passieren können, wie Sie in diesem Beispiel sehen können:
func BenchmarkEmptyMapCap100(b *testing.B) {
for i := 0; i < b.N; i++ {
x = make(map[string]int, 100)
}
}
Ausgang:
BenchmarkEmptyMapCap100-4 1000000 1783 ns/op 4176 B/op 3 allocs/op
Eine Karte vom Typ map[string]int
mit einer Anfangskapazität von 100 jetzt benötigt 4176 Bytes (auf 64-Bit-Arch).
Die Standardanfangskapazität liegt bei 7, wenn nicht explizit angegeben.