7
如何計算Common Lisp中對象具有多少個字節?內存中的類有多大?
如何計算Common Lisp中對象具有多少個字節?內存中的類有多大?
你不能在便攜式Common Lisp中做到這一點。
有用的可能是功能ROOM
。 ROOM
打印內存統計信息,並用參數T
打印它們的詳細信息。因此,您可能會在實例創作前後看到不同之處。實現可能具有特定的功能,但您需要使用手冊或支持郵件列表來檢查。
除了雷納的回答,這裏是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
。
有趣。 (方面解釋:我正在處理很多事情,我試圖弄清楚如何優化它們) – 2010-09-13 18:12:49
一些實現會讓你配置文件分配來找到熱點。這是改善足跡的更好方法。 – Xach 2010-09-13 19:02:16