<br><tt><font size=2>Hello, Marc & Will. </font></tt>
<br>
<br><tt><font size=2>For what it's worth, when I last looked at the way
Chez & Petite were run I noticed that it wasn't quite correct. The
script I saw does this:</font></tt>
<br>
<br><tt><font size=2>        chez_exec ()</font></tt>
<br><tt><font size=2>        {</font></tt>
<br><tt><font size=2>          echo "(load
\"$1.scm\")" | /usr/bin/time scheme</font></tt>
<br><tt><font size=2>        }</font></tt>
<br>
<br><tt><font size=2>        petite_chez_exec
()</font></tt>
<br><tt><font size=2>        {</font></tt>
<br><tt><font size=2>          echo "(load
\"$1.scm\")" | /usr/bin/time petite</font></tt>
<br><tt><font size=2>        }</font></tt>
<br>
<br><tt><font size=2>More correct would be something like this:</font></tt>
<br>
<br><tt><font size=2>        "(optimize-level
2) (module () (import-only scheme) (include \"$1.scm\"))"</font></tt>
<br>
<br><tt><font size=2>The "(optimize-level 2)" will enable immutable
Scheme bindings (and primitive inlining) while still producing safe code.
The top-level module (especially with the absence of any exports) will
signal to Chez that it is free to inline. The "(import-only scheme)"
declaration is virtually identical to the "(optimize-level 2)"
declaration, at least in Chez 7, and is in fact preferred over setting
the optimize level--but Will is using 6.1 so I'd recommend using both since
it will do no harm and 6.1 might be different. (See http://www.scheme.com/csug7/use.html#./use:h3
for more information on all of this.) Btw, a quick look at the Scheme code
shows this change will create at least one problem because expressions
sometimes appear before definitions (eg, the "(setup)" in boyer.scm
before the definition of "main.").</font></tt>
<br>
<br><tt><font size=2>Finally, make sure you aren't measuring compilation
time in addition to running time. The above approach appears to be doing
just that; for Chez at least compilation time can be significant relative
to a small running time. Optimizations take time. :-)</font></tt>
<br>
<br><tt><font size=2>If you're interested in more Chez times we have Chez
7.1 for Windows, Linux, Solaris, and Mac. (Our Sun box is rather ancient
though.)</font></tt>
<br>
<br><tt><font size=2>(Apologies if I misread something about the way the
tests were set up.)</font></tt>
<br>
<br><tt><font size=2>> Hello.  Will Clinger has done some "independent
testing" of the  <br>
> performance of various Scheme systems using the Gambit benchmark  <br>
> suite in the "R6RS" mode (safe code, generic arithmetic,
immutable  <br>
> bindings).  The results are published on the following page:<br>
> <br>
>    http://www.ccs.neu.edu/home/will/Twobit/benchmarks2006.html<br>
> <br>
> What's particularly interesting is that he benchmarked with more  <br>
> systems than I have access to (including Larceny, MIT-Scheme and Chez
 <br>
> Scheme) and on two platforms (Sun Sparc and Intel/Linux).<br>
> <br>
> The "geometric mean" results on the Sparc show that the
code  <br>
> generated by Gambit is among the fastest of all the Scheme systems
 <br>
> tested (it is only slightly slower than Chez Scheme and basically
the  <br>
> same speed as Larceny, which are both native code compilers).  Gambit
 <br>
> is the fastest of the Scheme to C compilers (about 2 times faster
 <br>
> than Bigloo and 4 times faster than Chicken).  MzScheme and Scheme48
 <br>
> are about 10 times slower than Gambit.  On Linux the situation
is  <br>
> similar, and Gambit clearly dominates the other systems, about 50%
 <br>
> faster than the next fastest, i.e. Larceny and Bigloo.  Note
that  <br>
> Chez Scheme was not available on the Linux machine.<br>
> <br>
> So, both on Sparc and Intel, it appears that Gambit is the fastest
 <br>
> open-source Scheme system.<br>
> <br>
> Marc</font></tt>