1

我在 lisp 中制作了一个程序,它的堆增加得太快了。问题应该是两件事之一,但我不知道哪一个使堆增长得如此之快。其中一个是具有 15 个位置的列表,每个位置是一个具有 4 个字段的结构(所有字段都是小数字)另一个是 15x15 的二维数组

现在对于每个循环周期,我都在使用每个循环制作一个副本

对于结构列表:(mapcar #'copy-structure list)

对于 15x15 2d 阵列(调整阵列(make-array dims :displaced-to array) dims)

有谁知道哪一个对内存消耗最负责?在此先感谢您的帮助

4

1 回答 1

1

只看这一点,两者都会以相似的数量级增长堆。我怀疑您的算法对于您的应用程序来说根本就没有足够的空间效率。

(顺便说一句,alexandria:copy-array用于复制数组adjust-array。hack 不是最有效的方法。)

于 2012-12-02T21:23:48.493 回答