1.6*_*618 4 vector sbcl common-lisp memory-size
在sbcl中使用的位向量有多少内存?
每位消耗1位内存吗?每位消耗1个字节的内存吗?每位消耗1个字的内存吗?
从Common Lisp,可以询问位向量是否存在特殊的数组类型:
* (UPGRADED-ARRAY-ELEMENT-TYPE 'bit)
BIT
Run Code Online (Sandbox Code Playgroud)
这意味着当您请求位向量时,CL将为您提供位向量,而不是具有8位元素的向量。
SBCL中对象的大小
Alastair Bridgewater提供此功能是为了尝试在SBCL中获取对象的“大小”:
(defun get-object-size/octets (object)
(sb-sys:without-gcing
(nth-value 2 (sb-vm::reconstitute-object
(ash (logandc1 sb-vm:lowtag-mask
(sb-kernel:get-lisp-obj-address object))
(- sb-vm:n-fixnum-tag-bits))))))
* (get-object-size/octets (make-array 40 :element-type 'bit :initial-element 1))
32
* (get-object-size/octets (make-array 400 :element-type 'bit :initial-element 1))
80
* (get-object-size/octets (make-array 4000 :element-type 'bit :initial-element 1))
528
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
302 次 |
| 最近记录: |