[Openmcl-devel] Lisp Comparison

R. Matthew Emerson rme at acm.org
Tue Apr 18 16:34:26 PDT 2017


> On Apr 18, 2017, at 4:22 PM, R. Matthew Emerson <rme at acm.org> wrote:
> 
> 
>> On Apr 18, 2017, at 3:46 PM, Gail Zacharias <gz at clozure.com> wrote:
>> 
>> Well, clearly whatever your code is spending most of its time doing is pretty slow in CCL.  In my experience when that kind of a huge discrepancy occurs, it can be corrected (e.g. to bring implementations to within an order of magnitude of each other) fairly easily once you know what's causing it.  Do you have any profiling results (from any of the implementations -- lispworks might be the easiest) to indicate where you spend most time?
> 
> https://github.com/eugeneia/sam is a tiny and simple-minded profiler that might help for CCL. It should be able to provide an idea of where CCL is spending so much time.

Also, when I say that it's tiny and simple-minded, I refer to the hack profiler that I wrote that is what sam is based on.  Max Rottenkolber did the work to neatly package it up and made a nice interface to it.

All credit to Max for the good bits.  Mine is the gross bit. :-)




> On Tue, Apr 18, 2017 at 5:44 PM, Craig Lanning <craig.t.lanning at gmail.com> wrote:
>> 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
> _______________________________________________
> Openmcl-devel mailing list
> Openmcl-devel at clozure.com
> https://lists.clozure.com/mailman/listinfo/openmcl-devel




More information about the Openmcl-devel mailing list