[r6rs-discuss] [Formal] Requirement to detect circular lists -
William D Clinger
will at ccs.neu.edu
Mon Oct 2 17:50:57 EDT 2006
I am posting this as an individual member of the Scheme
community. I am not speaking for the R6RS editors, and
this message should not be confused with the editors'
eventual formal response.
Kent Dybvig wrote:
> In Chez Scheme, with full optimization enabled (as one would do for
> built-in primitives), the difference is totally in the noise, with the
> circ version beating the regular version as often as not.
Furthermore, an implementor could use the trick of
using tortoise-and-hare only for lists whose length
exceeds some large threshold, e.g. the fixnum range.
In the interest of adding more noise, here are timings
in seconds, for the fastest of two runs that correspond
to Chez Scheme's (optimize-level 2), which is one less
than the "full optimization" Kent mentioned. The "R5RS"
column is for Andre van Tonder's length-regular, and
the "R6RS" column is for his length-circ.
10000 iterations 10 iterations
on 1000-element on 1000000-element
R5RS R6RS R5RS R6RS
Larceny v0.92b 0.095 0.212 0.258 0.449
Chez v6.1 0.160 0.230 0.330 0.460
MzScheme v352 4.683 6.773 5.160 7.369
2.8 GHz Linux:
Larceny v0.92b 0.048 0.064 0.059 0.077
MzScheme v352 0.066 0.079 0.100 0.124
MIT Scheme 0.110 0.110 0.120 0.120
Petite Chez 7.0a 0.916 2.746 0.863 2.883
It should be clear that the difference between the R5RS
and R6RS semantics is less than the differences between
More information about the r6rs-discuss