[armedbear-devel] Faster startup on GAE

Erik Huelsmann ehuels at gmail.com
Tue Dec 8 22:47:47 UTC 2009


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.




More information about the armedbear-devel mailing list