7

如何确定一个defclass对象在 Common Lisp 中有多少字节?

4

2 回答 2

3

除了 Rainer 的回答,这里是 CLISP 的回答:macroEXT: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:如果你defclass在提示符下进行评估,它没有被编译,所以times除了 . 之外还会报告一些绒毛c

于 2013-01-01T19:23:34.323 回答
3

你不能在可移植的 Common Lisp 中做到这一点。

有用的可能是函数ROOMROOM打印内存统计信息并使用参数T打印它们的详细信息。因此,您可能会在某些实例创建之前和之后看到差异。实现可能具有特定的功能,但您需要使用手册或支持邮件列表进行检查。

于 2010-09-13T17:54:57.187 回答