Considérations sur l'efficacité de la mémoire : interface vide ou structure vide dans Maps
On peut s'interroger sur la distinction entre l'utilisation d'une interface vide et d'une interface vide struct comme valeur dans une carte lorsque l’on cherche à émuler un ensemble dans Go. Examinons les différences d'utilisation de la mémoire qui découlent de ce choix.
Considérons les types suivants :
type MyType uint8
Pour simuler un ensemble, on peut utiliser la construction suivante :
map[MyType]interface{}
Cependant, il convient de noter que l'on peut également utiliser une structure vide à la place :
map[MyType]struct{}
Le principal avantage L'utilisation d'une structure vide réside dans son utilisation réduite de la mémoire par rapport à une interface vide. L'exemple suivant illustre cette différence :
package main import ( "fmt" "unsafe" ) func main() { var s struct{} fmt.Println(unsafe.Sizeof(s)) var i interface{} fmt.Println(unsafe.Sizeof(i)) }
Sortie (octets pour l'architecture 32 bits) :
0 8
Sortie (octets pour l'architecture 64 bits) :
0 16
Comme les résultats l'indiquent, une structure vide occupe zéro octet de mémoire, tandis qu'une interface vide consomme 8 ou 16 octets selon l'architecture.
Par conséquent, si l'efficacité de la mémoire est une considération cruciale, opter pour une structure vide comme valeur dans votre carte est un choix judicieux.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!