From: Craig L. <cra...@gm...> - 2017-04-18 21:28:57
|
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, SBCL 1.3.16 took 7.5 seconds to process the 17 schema pairs. Not, too, shabby considering that processing one pair most likely caused it to read 10 to 20 additional schema files. 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 know that someone posted on the SBCL list asking for help so that he could build a tree shaker that reduces the size of memory in a delivered appication. I hope he is successful in his endevour since the executable produced by SBCL was 57MB for my app. each of the other two lisps produced smaller executables. I would also ask that SBCL consider having different binary extension names for different platforms. Clozure CL does that and it is very helpful for building for multiple platforms from the same source directory tree. Craig Lanning |