These benchmarks are derived from the benchmarks that Lars Hansen used for his thesis on Older-first garbage collection in practice . That thesis contains storage profiles and detailed discussion for most of these benchmarks.
Apart from a
run-benchmark procedure, most of these
benchmarks are intended to run in any R5RS-conforming implementation
of Scheme. (The
softscheme benchmark is an exception.)
Please report any portability problems that you encounter.
To find the main entry point(s) of a benchmark, search for calls to
run-benchmark, which calculates and reports the run time
and any other relevant statistics.
run-benchmark procedure is implementation-dependent;
for an example of how to write it.
To obtain a gzip'ed tar file containing source code for all of the benchmarks described below, click here .
dynamic.sch, the code for the benchmark itself
dynamic-input-small.sch, which is macro-expanded code for the Twobit compiler
dynamic-input-large.sch, which is macro-expanded code for the Twobit compiler and SPARC assembler.
boyerbenchmark in Scheme).
MpermNKLbenchmark allocates a queue of size K and then performs M iterations of the following operation: Fill the queue with individually computed copies of all permutations of a list of size N, and then remove the oldest L copies from the queue. At the end of each iteration, the oldest L/K of the live storage becomes garbage, and object lifetimes are distributed uniformly between two volumes that depend upon N, K, and L.
nboyerbenchmark with a small but effective tweak: shared consing as implemented by Henry Baker.
defmacroconstruct. Requires an input file; the inputs used with the
twobitbenchmarks should be suitable.
nucleic2benchmark stripped of implementation-specific alternatives to its R4RS macros
twobitbenchmark without the SPARC assembler.
Last updated 4 April 2001.