Maison > développement back-end > Golang > Structure vide ou interface vide dans Go Maps : quelle est la mémoire la plus efficace ?

Structure vide ou interface vide dans Go Maps : quelle est la mémoire la plus efficace ?

Patricia Arquette
Libérer: 2024-12-18 19:34:10
original
949 Les gens l'ont consulté

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

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
Copier après la connexion

Pour simuler un ensemble, on peut utiliser la construction suivante :

map[MyType]interface{}
Copier après la connexion

Cependant, il convient de noter que l'on peut également utiliser une structure vide à la place :

map[MyType]struct{}
Copier après la connexion

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))
}
Copier après la connexion

Sortie (octets pour l'architecture 32 bits) :

0
8
Copier après la connexion

Sortie (octets pour l'architecture 64 bits) :

0
16
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal