GC Benchmarks for C#

These are programs I've written or found that have interesting behavior from the point of view of the garbage collector. They all allocate large amounts of data and create interesting heap structures. These are the versions I used in taking measurements for the VEE '05 paper I coauthored with Robert Harper and Guy Blelloch.

You can download an archive with all of the source code.

Splunc
This program builds a splay tree of random integer values, truncating the resulting tree at a fixed depth after each insertion. The lifetimes of objects inserted into the tree follow a log-normal distribution. The splay tree implementation was ported from a version written by Danny Sleator.
Raytracer
The benchmark was originally part of the Java Grande Forum Benchmark Suite. The original version is a multi-threaded 3D renderer. My port runs as a single-threaded application only.
GCBench
This is a port of a benchmark written by John Ellis and Pete Kovac and later modified by Hans Boehm. It builds large tree structures both from the top down and the bottom up.
GCOld
The original version was developed by Dave Detlefs and later modified and rewritten by Matthias Jacob and Will Clinger. This is another tree-based, artificial benchmark.

3 May 2005 xhtml1.0 css2.0
spoons