Common lisp 如何在Common Lisp中回收无法访问的对象以备将来使用?
我正在使用Common lisp 如何在Common Lisp中回收无法访问的对象以备将来使用?,common-lisp,recycle,Common Lisp,Recycle,我正在使用gsll和antik进行一些科学计算,我发现antik不重用无法访问的对象,并且总是分配新对象,这使得我的程序运行缓慢 例如,在gsll中有一个名为lu invert的函数,它计算给定矩阵的求逆,并且可以指定一个可选的目标对象。如果指定目标对象,lu invert将结果存储到该对象中。否则,lu invert将分配一个新对象来存储结果 我比较了两种情况的时间消耗,前者比后者快得多。但是,总是为这些函数指定目标对象是非常不方便的 我想知道是否有一种方法可以自动回收和重用无法访问的对象,而
gsll
和antik
进行一些科学计算,我发现antik
不重用无法访问的对象,并且总是分配新对象,这使得我的程序运行缓慢
例如,在gsll
中有一个名为lu invert
的函数,它计算给定矩阵的求逆,并且可以指定一个可选的目标对象。如果指定目标对象,lu invert
将结果存储到该对象中。否则,lu invert
将分配一个新对象来存储结果
我比较了两种情况的时间消耗,前者比后者快得多。但是,总是为这些函数指定目标对象是非常不方便的
我想知道是否有一种方法可以自动回收和重用无法访问的对象,而不是总是分配新对象。一种重用废弃对象而不是让垃圾收集器处理它们的技术是。中提供了一个常见的Lisp版本的参考资料。我会小心使用参考资料。在我(遥远的过去)的经验中(不是使用GSLL),它需要巨大的内存分配才能比丢弃和垃圾收集一直都要快。看起来资源应该总是一个优势,但是有一些开销,现代gc非常有效。