One of the conclusions of many of the profiles that we've been doing on our code base was that our boot up loads compiled functions through reflection. However, reflection is a very costly business, so it's best avoided. This is specially notable with Google App Engine which allows limited time per request, but uses that time limit on all requests including the first - which needs to initialize the entire JVM (!).
To reduce the time spent on booting ABCL, I changed our class loading routine (on a branch) to *only* resolve byte code into classes which are actually required for execution of the lisp code which is currently executed. All other functions stay in memory without being resolved into classes, preventing invocations of reflection.
With this method - which is in branches/fast-boot-preloading - we've reduced GAE startup times from 19000 cpu_ms to roughly 11000 cpu_ms. I intend to clean up the code - adding documentation and code comments - and moving this to the trunk.
To anybody who wants a stable release: this is at the heart of the implementation; please help us test it with your application(s)!
With kind regards,
Erik.
armedbear-devel@common-lisp.net