README 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. Source Code for Selected GC Benchmarks
  2. These benchmarks are derived from the benchmarks that Lars Hansen used for
  3. his thesis on Older-first garbage collection in practice . That thesis
  4. contains storage profiles and detailed discussion for most of these
  5. benchmarks.
  6. Portability
  7. Apart from a run-benchmark procedure, most of these benchmarks are intended
  8. to run in any R5RS-conforming implementation of Scheme. (The softscheme
  9. benchmark is an exception.) Please report any portability problems that you
  10. encounter.
  11. To find the main entry point(s) of a benchmark, search for calls to
  12. run-benchmark, which calculates and reports the run time and any other
  13. relevant statistics. The run-benchmark procedure is
  14. implementation-dependent; see run-benchmark.chez for an example of how to
  15. write it.
  16. GC Benchmarks
  17. To obtain a gzip'ed tar file containing source code for all of the
  18. benchmarks described below, click here .
  19. dummy
  20. Description: A null benchmark for testing the implementation-specific
  21. run-benchmark procedure.
  22. dynamic
  23. Description: Fritz Henglein's algorithm for dynamic type inference.
  24. Three inputs are available for this benchmark. In increasing order of
  25. size, they are:
  26. 1. dynamic.sch, the code for the benchmark itself
  27. 2. dynamic-input-small.sch, which is macro-expanded code for the
  28. Twobit compiler
  29. 3. dynamic-input-large.sch, which is macro-expanded code for the
  30. Twobit compiler and SPARC assembler.
  31. earley
  32. Description: Earley's context-free parsing algorithm, as implemented by
  33. Marc Feeley, given a simple ambiguous grammar, generating all the parse
  34. trees for a short input.
  35. gcbench
  36. Description: A synthetic benchmark originally written in Java by John
  37. Ellis, Pete Kovac, and Hans Boehm.
  38. graphs
  39. Description: Enumeration of directed graphs, possibly written by Jim
  40. Miller. Makes heavy use of higher-order procedures.
  41. lattice
  42. Description: Enumeration of lattices of monotone maps between lattices,
  43. obtained from Andrew Wright, possibly written by Wright or Jim Miller.
  44. nboyer
  45. Description: Bob Boyer's theorem proving benchmark, with a scaling
  46. parameter suggested by Boyer, some bug fixes noted by Henry Baker and
  47. ourselves, and rewritten to use a more reasonable representation for
  48. the database (with constant-time lookups) instead of property lists
  49. (which gave linear-time lookups for the most widely distributed form of
  50. the boyer benchmark in Scheme).
  51. nucleic2
  52. Description: Marc Feeley et al's Pseudoknot benchmark, revised to use
  53. R5RS macros instead of implementation-dependent macro systems.
  54. perm
  55. Description: Zaks's algorithm for generating a list of permutations.
  56. This is a diabolical garbage collection benchmark with four parameters
  57. M, N, K, and L. The MpermNKL benchmark allocates a queue of size K and
  58. then performs M iterations of the following operation: Fill the queue
  59. with individually computed copies of all permutations of a list of size
  60. N, and then remove the oldest L copies from the queue. At the end of
  61. each iteration, the oldest L/K of the live storage becomes garbage, and
  62. object lifetimes are distributed uniformly between two volumes that
  63. depend upon N, K, and L.
  64. sboyer
  65. Description: This is the nboyer benchmark with a small but effective
  66. tweak: shared consing as implemented by Henry Baker.
  67. softscheme
  68. Description: Andrew's Wright's soft type inference for Scheme. This
  69. software is covered by the GNU GENERAL PUBLIC LICENSE. This benchmark
  70. is nonportable because it uses a low-level syntax definition to define
  71. a non-hygienic defmacro construct. Requires an input file; the inputs
  72. used with the dynamic and twobit benchmarks should be suitable.
  73. twobit
  74. Description: A portable version of the Twobit Scheme compiler and
  75. Larceny's SPARC assembler, written by Will Clinger and Lars Hansen. Two
  76. input files are provided:
  77. 1. twobit-input-short.sch, the nucleic2 benchmark stripped of
  78. implementation-specific alternatives to its R4RS macros
  79. 2. twobit.sch, the twobit benchmark itself
  80. twobit-smaller.sch
  81. Description: The twobit benchmark without the SPARC assembler.
  82. ----------------------------------------------------------------------------
  83. Last updated 4 April 2001.