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.
The run-benchmark
procedure is implementation-dependent;
see
run-benchmark.chez
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 .
dummy
run-benchmark
procedure.
dynamic
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.
earley
gcbench
graphs
lattice
nboyer
boyer
benchmark in Scheme).
nucleic2
perm
MpermNKL
benchmark 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.
sboyer
nboyer
benchmark with a small but effective
tweak: shared consing as implemented by Henry Baker.
softscheme
defmacro
construct.
Requires an input file; the inputs used with the dynamic
and twobit
benchmarks should be suitable.
twobit
twobit-input-short.sch
, the nucleic2
benchmark stripped of implementation-specific alternatives to its
R4RS macros
twobit.sch
, the twobit
benchmark itself
twobit-smaller.sch
twobit
benchmark without the SPARC assembler.
Last updated 4 April 2001.