我正在使用gsll
与antik
进行一些科学计算,我发现antik
不会重复使用无法访问的对象,并且总是分配新的对象,这会使我的程序变慢。
例如,lu-invert
中有一个名为gsll
的函数,它计算给定矩阵的反转,并且可以指定可选的目标对象。如果我指定目标对象,lu-invert
会将结果存储到该对象中。否则,lu-invert
将分配一个新对象来存储结果。
我比较了两种情况的时间消耗,前者比后者快得多。但是,始终为这些功能指定目标对象非常不方便。
我想知道是否有一种方法可以自动回收和重复使用无法访问的对象,而不是总是分配新的对象。
答案 0 :(得分:6)
重用废弃对象而不是垃圾收集器处理它们的技术是Resources。 Peter Norvig's auxfns.lisp中提供了Common Lisp版本的资源。