池分配

我们的 Lisp 很简单,但速度不快。它的性能与某些脚本语言(如Python和Ruby)相似。我们程序中的大多数性能开销来自这样一个问题:几乎任何过程都需要我们构造和破坏lval。因此,我们必须经常调用malloc。这是一个很慢的函数,因为它需要操作系统为我们做一些管理。在进行计算时,会有很多lval类型的复制,分配和释放。

如果我们希望减少这种开销,我们需要降低malloc的调用次数。执行此操作的一种方法是让在程序开始时就调用一次malloc,分配大量内存。然后我们应该调用一些函数来替换我们所有的malloc调用,这些函数分割并分配这个内存以便在程序中使用。这意味着我们正在模拟操作系统的一些行为,但是只是以更快的本地方式进行。这种想法称为内存池分配,是游戏开发和其他对性能特别重视的应用程序中常用的技术。

这可能很难正确实现,但在概念上并不会太复杂。如果您想要一种快速获得性能提升的方法,那么您可能会对此感兴趣。