我用 lisp 编写了一个程序,它增加堆的速度太快了。 问题应该是两件事之一,但我不知道是哪一件事使堆增长得如此之快。 其中一个是一个有 15 个位置的列表,每个位置是一个有 4 个字段的结构(所有字段都只是小数字) 另一个是二维数组 15x15
现在对于每个循环周期,我都使用每个循环制作一个副本
对于结构列表: (mapcar #'复制结构列表)
对于 15x15 二维数组 (调整阵列 (make-array dims :displaced-to array) 调暗)
有人知道哪个是内存消耗的主要原因吗? 预先感谢您的帮助
最佳答案
只要看看这个,两者都会以相似的数量级增长堆。我怀疑您的算法对于您的应用来说空间效率不够高。
(顺便说一下,使用 alexandria:copy-array
来复制数组。adjust-array
hack 并不是最有效的方法。)
关于arrays - lisp 减少堆(数组与列表),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13673250/