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
Untuk mensimulasikan set, seseorang mungkin menggunakan binaan berikut:
map[MyType]interface{}
Walau bagaimanapun, perlu diperhatikan bahawa seseorang juga boleh menggunakan struct kosong sebaliknya:
map[MyType]struct{}
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)) }
Output (bait untuk seni bina 32-bit):
0 8
Output (bait untuk seni bina 64-bit):
0 16
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!