4.6 Additional steps after delivery level 5
There are several suggestions for additional steps that may be taken to reduce the size and speed of the delivered application image after the maximum delivery level has been reached.
- User packages may be pushed onto the list of packages to be deleted by using the keyword argument
:delete-packages
to the function deliver
(see page :delete-packages). This means that all unreferenced symbols are shaken from the pushed packages. - Return to compiling the application code, and experiment with optimization. Type declarations and safety declarations can both speed the application up and make it smaller. Compile code for delivery with the compiler option
(space 3)
. However, you should ensure that low-safety inlining does not bloat the image. - Parts of the numeric code can be deleted by using the override list to specify that, for example, the code to handle complex numbers should be deleted. This can be done by passing
:keep-complex
nil
to the function deliver
. - Study the output from a typical run, and delete unused functions with the
deliver
keyword :functions-to-remove
, or do so manually with fmakunbound
. - If the application does not use CLOS, remove it with
:keep-clos
nil
. - Delete the
format
code by passing the :format
nil
to the function deliver
.
LispWorks Delivery User Guide - 11 Dec 2001