Clementson's Blog

Bits and pieces (mostly Lisp-related) that I collect from the ether.

June 2004
Sun Mon Tue Wed Thu Fri Sat
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
May  Jul

CL Implementation Benchmarks on Win2000

Wednesday, June 30, 2004

The cl-bench benchmarks that Eric Marsden has assembled are probably the most comprehensive set of CL performance benchmarks publicly available. They include the Gabriel benchmarks, mathematical functions, bignum-intensive operations, CLOS test, hashtable exercising, read-line exercising, and various operations on arrays, strings and bitvectors. Rainer Joswig has compiled a set of results for different CL implementations on Mac OS X and there is an equivalent set of results for Linux/Unix CL implementations on CLiki. However, I don't believe anyone has produced a similar comparison for MS Windows CL implementations. Hence, this posting! :-)

I ran tests against the following three CL implementations:

  1. Xanalys Lispworks version 4.3.7
  2. Franz Allegro CL version 6.2
  3. GNU CLISP version 2.33
I initially looked at running the benchmarks against Corman CL and Armed Bear CL as well; however, I had problems when I attempted to compile and/or run the benchmarks on these two implementations so I abandoned the attempt.

All tests were run on a Toshiba Tecra 9000 laptop with a 1200MHz Intel Pentium III processor and 1 MB of RAM under MS Windows 2000 SP4.

Some caveats: I have colored the results to provide a better visual cue as to the relative performance of each implementation. The color coding is as follows: Here are the results of the benchmark tests:

Benchmark LW-4.3.7 ACL-6.2 CLISP-2.33
COMPILER 3.28 2.48 2.28
LOAD-FASL 4.35 0.65 1.20
SUM-PERMUTATIONS 15.45 5.02 7.41
WALK-LIST/SEQ 0.21 0.25 0.09
WALK-LIST/MESS n/a n/a 0.03
BOYER 88.49 23.00 91.50
BROWSE 7.63 0.79 2.60
DDERIV 1.75 0.91 3.31
DERIV 1.98 0.88 3.46
DESTRUCTIVE 1.18 0.84 4.02
DIV2-TEST-1 2.70 1.09 4.73
DIV2-TEST-2 3.07 1.43 7.04
FFT 7.59 6.70 7.70
FRPOLY/FIXNUM 2.00 1.61 9.70
FRPOLY/BIGNUM 2.07 1.86 3.24
FRPOLY/FLOAT 2.50 2.63 8.98
PUZZLE 5.36 10.03 21.41
TAK 0.77 0.73 9.63
CTAK 0.78 1.90 7.55
TRTAK 0.77 0.72 9.27
TAKL 1.90 2.08 12.35
STAK 1.07 5.25 7.86
FPRINT/UGLY 5.99 9.82 5.07
FPRINT/PRETTY 23.73 11.06 4.31
TRAVERSE 6.58 3.51 22.74
TRIANGLE 3.92 8.61 36.20
RICHARDS 5.09 9.21 24.58
FACTORIAL 2.48 2.22 1.30
FIB 0.39 0.29 4.73
FIB-RATIO 0.18 9.21  0.07
MANDELBROT/COMPLEX 25.32 31.09 33.54
MANDELBROT/DFLOAT 13.11 15.09 30.92
MRG32K3A 13.84 7.79 42.78
CRC40 90.64 86.25 161.34
BIGNUM/ELEM-100-1000 0.74 1.62 0.09
BIGNUM/ELEM-1000-100 2.87 8.02 0.27
BIGNUM/ELEM-10000-1 3.73 22.42 0.25
BIGNUM/PARI-100-10 0.08 0.12 0.03
BIGNUM/PARI-200-5 0.38 0.57 0.10
PI-DECIMAL/SMALL 37.61 757.83 2.56
PI-DECIMAL/BIG n/a 1727.69 1.88
PI-ATAN n/a  11.97 2.10
PI-RATIOS 11.15 59.17 1.19
SLURP-LINES 0.01 0.02 0.02
HASH-STRINGS 2.05 14.35 3.05
HASH-INTEGERS 5.04 6.73 3.20
BOEHM-GC 11.94 9.29 25.83
DEFLATE-FILE n/a 3.57 7.83
1D-ARRAYS 0.69 0.51 1.49
2D-ARRAYS 24.04 23.33 39.52
3D-ARRAYS n/a 48.18 87.82
BITVECTORS 2.83 3.20 16.92
BENCH-STRINGS 25.44 27.99 3.55
fill-strings/adjustable 66.62 97.89 64.58
STRING-CONCAT n/a n/a 564.81
SEARCH-SEQUENCE 7.48 7.47 18.52
CLOS/defclass 6.38 0.31 0.89
CLOS/defmethod 1.40 0.35 0.20
CLOS/instantiate 5.92 5.11 6.53
CLOS/simple-instantiate 1.26 0.88 6.08
CLOS/methodcalls 8.13 7.34 9.76
CLOS/method+after 6.67 3.11 8.07
CLOS/complex-methods 0.86 0.76 n/a
EQL-SPECIALIZED-FIB 1.06 0.96 3.12


To summarize:

emacs Copyright © 2004 by Bill Clementson