2010-01-29

Benchmarks

First, the usual disclaimer:

That said, I've run the latest version of PLT Scheme on two sets of benchmarks:
  • Benchmarks in the PLT sources – vs. Bigloo, Chicken, Gambit, Guile, Ikarus, Larceny, MIT Scheme, and Scheme48; safe operations and generic arithmetic only
The second set is why I started running benchmarks. Fixnum-/flonum-specific arithmetic and unsafe operations are new in PLT Scheme 4.2.4. The benchmark results suggest that the new operations in PLT Scheme offer roughly the same performance benefits as in Bigloo and Gambit. There's room for improvement, but it's a good first cut. For the other results: PLT Scheme is rarely the fastest implementation on a given benchmark. For most purposes, though, it's in the same ballpark – except for programs that spend all their time capturing and invoking continuations. It's fun to run benchmarks occasionally. Now, back to working on language design, libraries, documentation, usability...

5 comments:

dales@vxitech.com said...

Could it be possible to add Guile 1.9.7 to that list?

Matthew Flatt said...

Although I don't want to stay in the benchmark-running business, Guile 1.9.7 does seem to be much faster than 1.8.7. So, I've replaced 1.8.7 with 1.9.7 in the benchmark results.

Andy Wingo said...

Thanks for adding Guile 1.9.7. I wonder though, did you include the runtime for the first Guile run? Guile will compile files the first time they're run, and then used the cached object file later.

I ask because my old slow laptop is getting better times than the ones you list. Perhaps you inadvertantly included that first compilation time.

In any case, congrats on those great PLT results! :)

Happy hacking,

Andy

Matthew Flatt said...

I don't think that compilation time is included, since run time is measured within the program using `(times)'. Also, clearing out the cache before running doesn't seem to give different results than running a second time.

Andy Wingo said...

Good point regarding the use of `time'. Ah well, a Lisp is never finished, is it. Thanks for the response, and happy hacking :)