Comment calculer le nombre d'octets d'un objet defclass
dans Common Lisp?Quelle est la taille d'une classe en mémoire?
7
A
Répondre
3
Vous ne pouvez pas faire cela dans Common Lisp portable. La fonction peut être la fonction ROOM
. ROOM
imprime les statistiques de la mémoire et avec l'argument T
il les imprime en détail. Vous pouvez donc voir une différence avant et après certaines créations d'instance. Les implémentations peuvent avoir des fonctions spécifiques, mais vous devez vérifier cela avec le manuel ou avec la liste de diffusion du support.
3
En plus de la réponse de Rainer, voici la réponse pour CLISP: macro EXT:TIMES
(defclass c() ((x) (y) (z)))
(ext:times (make-instance 'c))
Permanent Temporary
Class instances bytes instances bytes
----- --------- --------- --------- ---------
C 1 48 0 0
----- --------- --------- --------- ---------
Total 1 48 0 0
Real time: 1.4E-5 sec.
Run time: 0.0 sec.
Space: 48 Bytes
#<C#x000333CF2AA0>
NB: si vous évaluez defclass
à l'invite, il est pas compilé, de sorte times
rapportera une bourre en plus c
.
Intéressant. (explication de côté: je fais face à beaucoup de choses et j'essaie de comprendre comment les optimiser plus petit) –
Quelques implémentations te laisseront l'allocation de profil pour trouver les hotspots. C'est beaucoup mieux un moyen d'améliorer l'empreinte. – Xach