Comment obtenir la taille de la structure et de son contenu en octets dans golang?
J'ai un struct, dire:
type ASDF struct {
A uint64
B uint64
C uint64
D uint64
E uint64
F string
}
J'ai créer une tranche de cette structure: a := []ASDF{}
Je ne les opérations sur cette tranche de la structure (ajout/suppression/mise à jour des structures qui varient dans leur contenu); comment puis-je obtenir la taille totale en octets (pour mémoire) de la tranche et de son contenu? Est-il construit pour le faire ou dois-je besoin d'exécuter manuellement un calcul à l'aide de unsafe.Sizeof
et puis len
chaque chaîne?
Petite question, n'est-ce pas struct
Il y aurait un problème avec
ASDF
taille fixe, puisque vous déclarez tous les types de variables? Vous pouvez ensuite il suffit de multiplier la taille de la structure pointeur de ASDF
par len(a)
? Comme vous ne pouvez même ajouter de la taille de l'élément dans la tranche? Ou ai-je mal comprendre la façon dont la tranche travail?Il y aurait un problème avec
string
terrain.
OriginalL'auteur user1529891 | 2015-07-19
Vous devez vous connecter pour publier un commentaire.
Somme de la taille de l'ensemble de la mémoire, à l'exclusion de garbage collector et d'autres frais généraux. Par exemple,
De sortie:
http://play.golang.org/p/5z30vkyuNM
OriginalL'auteur peterSO
J'ai peur de dire que
unsafe.Sizeof
est la voie à suivre ici si vous voulez obtenir un résultat. La taille en mémoire d'une structure n'en est rien, vous devez vous appuyer sur. Notez que même le résultat deunsafe.Sizeof
est inexact: Le runtime peut ajouter des en-têtes pour les données que vous ne pouvez pas observer à l'aide de ramassage des ordures.Pour votre exemple (trouver une taille de cache), je vous suggère d'aller avec un statique de la taille de ce qui est raisonnable pour le nombre de processeurs. Dans presque tous les cas de faire de tels micro-optimisations ne va pas payer de lui-même.
len(...)
la fonction ne semble travailler avec des tableaux, chaînes de caractères, les morceaux, et les canaux. Pas d'aide avec les structs =(Juste pour avoir une meilleure compréhension de ce que vous essayez d'atteindre, que croyez-vous de cette information pour être utile?
aucune idée, demandez OP =) je suis juste de commenter à partir de la galerie d'arachide
OriginalL'auteur fuz