[gclist] gc interface

William D Clinger will@ccs.neu.edu
Tue, 02 Apr 1996 15:19:56 +0000


Another example of a system with plug-compatible garbage
collectors is Larceny, an implementation of Scheme that
Lars Hansen built for his master's thesis on the relationship
between programming style and performance in Scheme.  It turns
out that this relationship is very sensitive to the garbage
collection technology.

Hansen wrote three related garbage collectors:

  1.  stop-and-copy
  2.  two-generational copying, with no write barrier or
      remembered set so the collector had to scan the heap
      at each collection
  3.  conventional two-generational copying, with a software
      write barrier and a remembered set

Since all three collectors were written by the same person,
they shared the same basic code for two-space copying gc,
and the code generated by the Scheme compiler (Twobit) was
identical for all three collectors, he achieved a nice degree
of control over his benchmarks.  Furthermore the system's
performance was in the same ballpark as that of commercial
implementations of Scheme and Common Lisp.

References:

  Lars Thomas Hansen.  The Impact of Programming Style on the
  Performance of Scheme Programs.  M.S. Thesis, University of
  Oregon, August 1992.  185 pp.  Available by anonymous ftp:
  ftp://ftp.cs.indiana.edu/pub/scheme-repository/doc/pubs/impact.ps.gz

  William D Clinger and Lars Thomas Hansen.  Lambda, the Ultimate
  Label, or a simple optimizing compiler for Scheme.  In 1994 ACM
  Conference on Lisp and Functional Programming.  Lisp Pointers
  7(3), July-September 1994, pages 128-139.

Will