[Openmcl-devel] Lisp Comparison

Craig Lanning craig.t.lanning at gmail.com
Tue Apr 18 14:44:01 PDT 2017

I have been working on a rather large application that runs from the
command line.  It reads schema files that are part of the ISO 10303
STEP family of product data standards.  It can also read the
corresponding Product Data Population files.

Recently someone gave me a script that runs a schema comparison (using
my application) across several schemata.  (In this case, the script
processed 17 schema pairs.) The act of processing one pair of schema
files will mean that additional schema files are pulled from a special
repository.  The schema files being processed "include" other schema
files which also may "include" even more schema files.

I can build my application using LispWorks CL 6.1.1, Clozure CL v1.11,
and SBCL 1.3.16.

I can build with LispWorks CL 6.1.1 in 32-bit only.

I can build with Clozure CL 1.11 in both 32-bit and 64-bit.

I can build with SBCL 1.3.16 in 64-bit only.  (No easy way to get both
the 32-bit and 64-bit versions at the same time.)

The source code for my application is stored on SourceForge
(http://exp-engine.sourceforge.net/) as the original development was
intended to be an open source project.

               LWL 6.1.1(32)   SBCL 1.3.16(64)   CCL 1.11(32)   CCL 1.11(64)
App Compile    10.323 sec      18.002 sec        10.242 sec     10.587 sec
App Deliver     4.306 sec       6.379 sec         1.418 sec      1.875 sec
App Filesize   37,429,248      57,409,584        24,719,376     33,460,464
17 schemata     8.320 sec       7.506 sec         23:49.054      23:44.190

The machine used was
        Dell Inspiron 3558 Laptop
        Intel Core i3 2.1GHz CPU
        4GB Memory

As you can see in the chart above, CCL 1.11 took over 23 minutes to
process the 17 schema pairs.  Not a good showing.

This application does not allocate and deallocate large amounts of
memory so I have no information about which Lisp handles memory the
best.  None of the Lisps tested ran out of memory.

LispWorks and Clozure CL both start with a small amount of memory and 
grow and shrink the dynamic space as needed so I suspect that they
handle memory the best.

SBCL needs to be told what its maximum dynamic space size is.  It then
allocates all of that memory.

My purpose in posting this message was to give a reference for how
different Lisps support real applications.

I was curious about whether CCL's time has improved in successive
releases so I downloaded CCL 1.10 and 1.9.  I was unable to run 1.9,
but was able to run 1.10.  1.11 produced a slower executable than 1.10.

Craig Lanning

More information about the Openmcl-devel mailing list