如何回收无法访问的对象以备将来在Common Lisp中使用?

Sal*_*Egg 2 common-lisp recycle

我正在使用gsllantik进行一些科学计算,我发现antik不重用无法访问的对象并且总是分配新的对象,这使我的程序变慢.

例如,有一个名为lu-invertin 的函数gsll,它计算给定矩阵的反转,并且可以指定可选的目标对象.如果我指定目标对象,lu-invert则会将结果存储到该对象中.否则,lu-invert将分配一个新对象来存储结果.

我比较了两种情况的时间消耗,前者比后者快得多.但是,始终为这些功能指定目标对象非常不方便.

我想知道是否有一种方法可以自动回收和重用无法访问的对象,而不是总是分配新的对象.

han*_*s23 6

重用废弃对象而不是让垃圾收集器处理它们的技术是资源.Peter Norvig的auxfns.lisp中提供了Common Lisp版本的Resources .