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

时间:2013-09-17 02:04:12

标签: common-lisp recycle

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

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

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

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

1 个答案:

答案 0 :(得分:6)

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