Copyright © 2006 Gene Michael Stover. All rights reserved. Permission to copy, store, & view this document unmodified & in its entirety is granted.
I was curious about how quickly Microsloth Winders can load a program that uses a lot of DLLs. So I wrote a Lisp program which writes DLL files & C programs that use them.
There probably isn't any practical use. I was just curious.
Here's how to download & run the programs yourself:
C:\lotdll\.
You can run those programs individually, but if you run go.exe, it will run all of them & display the times required for each.
The ZIP file also includes the source code.
``Source code'' can be an ill-defined term. I wrote three programs for this test: lotdll.lisp, go.c, & build.bat. The Lisp programs in lotdll.lisp generate a lot of C files & a Makefile. C files are commonly considered source code, but the ultimate source code for this project is in those three files I created by hand.
If you want to start from scratch with my three ultimate source code files, you must download them & place them in the appropriate directories. Here's the directory structure, plus links to the files.1
You must create the directory structure on your computer, then download the three files into it.
Then fire-up your favorite Lisp system. In Lisp, do this:
Back on the Microsloth Winders command line, edit build.bat, if necessary. Then run it: .\build.
When it's done, you'll have all the programs in the bin directory.
Figure 1 shows the results on my home Winders computer. My
computer has
Winders XP (home edition, methinks) running on a
1 GHz CPU with
a gigabyte of real memory.
It looks like the cost is
, maybe a little less, where
is the number of DLLs your program uses. Every 100 DLLs
your program uses adds about 1 second to the program's
start-up time.
Gene Michael Stover 2008-04-20