Rumah > pembangunan bahagian belakang > Golang > Struktur Kosong lwn. Antara Muka Kosong dalam Peta Go: Manakah Lebih Cekap Memori?

Struktur Kosong lwn. Antara Muka Kosong dalam Peta Go: Manakah Lebih Cekap Memori?

Patricia Arquette
Lepaskan: 2024-12-18 19:34:10
asal
954 orang telah melayarinya

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

Pertimbangan Kecekapan Memori: Antara Muka Kosong lwn. Struktur Kosong dalam Peta

Seseorang mungkin tertanya-tanya tentang perbezaan antara menggunakan antara muka kosong dan kosong struct sebagai nilai dalam peta apabila ingin meniru set dalam Go. Mari kita selidiki perbezaan penggunaan memori yang timbul daripada pilihan ini.

Pertimbangkan jenis berikut:

type MyType uint8
Salin selepas log masuk

Untuk mensimulasikan set, seseorang mungkin menggunakan binaan berikut:

map[MyType]interface{}
Salin selepas log masuk

Walau bagaimanapun, perlu diperhatikan bahawa seseorang juga boleh menggunakan struct kosong sebaliknya:

map[MyType]struct{}
Salin selepas log masuk

Faedah utama menggunakan struct kosong ialah penggunaan memori yang berkurangan berbanding antara muka kosong. Contoh berikut menunjukkan perbezaan ini:

package main

import (
    "fmt"
    "unsafe"
)

func main() {
    var s struct{}
    fmt.Println(unsafe.Sizeof(s))
    var i interface{}
    fmt.Println(unsafe.Sizeof(i))
}
Salin selepas log masuk

Output (bait untuk seni bina 32-bit):

0
8
Salin selepas log masuk

Output (bait untuk seni bina 64-bit):

0
16
Salin selepas log masuk

Seperti yang ditunjukkan oleh keputusan, struct kosong menduduki sifar bait memori, manakala antara muka kosong menggunakan sama ada 8 atau 16 bait bergantung pada seni bina.

Oleh itu, jika kecekapan memori adalah pertimbangan yang penting, memilih struct kosong kerana nilai dalam peta anda ialah pilihan yang bijak.

Atas ialah kandungan terperinci Struktur Kosong lwn. Antara Muka Kosong dalam Peta Go: Manakah Lebih Cekap Memori?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan