Here are the results of several performance benchmarking tests run on ten different Common Lisp implementations running on a MacBook Pro, a dual P4 3.0 GHz, a P3 1.1 GHz, a G3 400 MHz and an UltrasparcIIe 500 MHz. The tests run include

various aspects of CLOS: time taken to compile and execute
DEFCLASS forms which create a class hierarchy, instance creation
time, time taken to compile and execute DEFMETHOD forms, execution
of method combinations, both with and without :after methods.

Except for the CLOS code, timings do not include compilation time. The
garbage collector is run before each test to try to make the timings
more repeatable. Remember that the only real benchmark is your
application: this code is only representative of real-life programs to
a limited extent. For certain targets, we assume that the times
reported by GET-INTERNAL-RUN-TIME and GET-INTERNAL-REAL-TIME are
accurate.

The code for these performance benchmarks can be downloaded from
http://www.chez.com/emarsden/downloads/cl-bench.tar.gz. (For some reason
this seems to error out as a direct link but not when accessed from
the following page: http://www.chez.com/emarsden/downloads/.) A Makefile and a Bourne shell are used to run the benchmarks. A Windows user may not have those installed or wish to use them; in that case, create a .bat file in the toplevel cl-bench directory. Examples:

Allegro CL 8.2 Express Edition will not run cl-bench because the heap size is restricted.

Lispworks Personal Edition 6.0.1 does not have a console available. Attempts to run cl-bench manually through the IDE failed because the listener doesn't appear to understand hierarchical directories. Also the Personal Edition has a heap size restriction so it will probably fail anyways.

The CLISP 2.49 Windows native binary does not have a POSIX module. cl-bench will fail with an error 'there is no package named "OS"'. Also, watch out when installing this binary. The CLISP Windows binary installer will completely destroy your system %PATH%, if you check the "add CLISP to your path" option. If you notice that your system path has been destroyed before you reboot, you may be able to recover an older copy of it by starting regedit and looking under HKLM\System\ControlSetXXX\Control\Session Manager\Environment\Path, where "XXX" is a number such as "004". Otherwise once you reboot you are SOL.

The CLISP 2.48 Cygwin package provides a POSIX layer, so most benchmarks do run. However, STRING-CONCAT fails because a desired string length of 6553600 exceeds the supported maximum length. This test can be skipped by adding #-(or clisp) before the STRING-CONCAT test in do-execute-script.lisp.

Here is an example of the type of results you can obtain, for x86 and
SPARC platforms. To interpret these numbers: the number in the Reference column is a number of seconds taken to execute that test. The other numbers are the relative performance of that implementation, so for example a number of 1.3 means 30% slower than the reference implementation. A number of -1 means that the corresponding test was not run on that implementation, either because it does not support the given feature (certain types of method combination for CLISP, for instance), or because of implementation limits (heap size limit on LispWorks Personal, for example).