SBCL 的并行垃圾回收

2024-05-12

本文介绍了为 Steel Bank Common Lisp (SBCL) 实现的并行垃圾回收器。该回收器基于 Immix 的标记区域堆,可在不移动对象的情况下回收内存并允许 bump 分配。该回收器利用 Immix 的设计,通过将世代与行关联来实现世代,而无需移动对象或记录每个对象的世代;并通过仅在需要时更新对象映射来实现保守的根查找,该映射基于记录连续分配对象的运行。使用一个内核的并行垃圾回收器通常比 SBCL 的复制回收器慢,但在两个内核的情况下性能优于复制回收器,并且随着内核数量的增加继续扩展。

阅读更多
47
未分类 垃圾回收

Petalisp 中的数组编程简介

2024-05-07

Petalisp是一种纯粹的函数式数组编程语言,嵌入在Common Lisp中。它为数组的重新排序、广播和组合提供了简单而强大的机制,以及对任意数量的数组进行任意Common Lisp函数的元素映射的操作符。本文介绍了在Petalisp中编写高性能数组程序的过程,并展示了它的主要概念和接口。文章还以一个迭代方法的简单例子和一些基准测试为例,最后以Petalisp实现的概述和它如何实现高性能和低内存占用为结尾。

阅读更多
42