一个类在内存中的大小是多少?

发布于 2024-09-19 11:19:55 字数 56 浏览 15 评论 0原文

如何计算 Common Lisp 中 defclass 对象有多少字节?

How do I figure out how many bytes a defclass object has in Common Lisp?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

雨夜星沙 2024-09-26 11:19:56

在可移植的 Common Lisp 中你无法做到这一点。

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

You can't do that in portable Common Lisp.

Useful could be the function ROOM. ROOM prints memory statistics and with the argument T it prints them detailed. So you may see a difference before and after some instance creations. Implementations may have specific functions, but you need to check that with the manual or with the support mailing list.

月亮是我掰弯的 2024-09-26 11:19:56

除了 Rainer 的答案之外,这是 CLISP 的答案:宏 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>

注意:如果您在提示符下计算 defclass,它不会被编译,因此 times 除了 c 之外还会报告一些错误信息>。

In addition to Rainer's answer, here is the answer for 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: if you evaluate defclass at the prompt, it is not compiled, so times will report some fluff in addition to c.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文