[armedbear-devel] Re: [quicklisp] ABCL vs SBCL quicklisp load time in .rc files

Mark Evenson evenson at panix.com
Tue Nov 5 14:52:01 UTC 2013

On 05/11/13 1428 , Zach Beane wrote:
> Dave Tenny <dave.tenny at gmail.com> writes:
>> This  may be more of an ABCL question than a Quicklisp question I guess,
>> but I haven't yet found a good place to ask ABCL questions of this type.
>> I'll post this in the common-lisp group too.
>> I have the following code in my SBCL and ABCL rc files for quicklisp:
>> #-quicklisp
>> (let ((quicklisp-init (merge-pathnames "quicklisp/setup.lisp"
>>                                         (user-homedir-pathname))))
>>    (when (probe-file quicklisp-init)
>>      (load quicklisp-init)))
>> It executes in negligible time in SBCL, but takes about 12-13 seconds every
>> time in ABCL (beyond the prior 2 seconds for normal jvm/abcl startup time).
>> In both cases there's no obvious compilation or other stuff going on (as
>> in, no output to console of things being compiled).
>> Any idea why it takes so long in ABCL?
>> Thanks, and ABCL discussion forum pointers welcome.
> I'm not sure why it takes so long, sorry. I don't think that's typical,
> but I could be mistaken. I don't use ABCL very much.
> armedbear-devel at common-lisp.net is a good place for ABCL questions. I'm
> not sure how you subscribe, but there are a lot of helpful ABCL hackers
> answering questions there.

Unfortunately, I believe that the long startup time for Quicklisp in 
ABCL is typical   In order to save on raw startup time, the ABCL 
implementation has an autoload mechanism by which the compilation unit 
("file") containing a given function is not loaded until first one is 
executed.  Among other things, this means that we don't have to load 
CLOS to get to the bare "CL-USER>" REPL prompt.  Since Quicklisp is 
intimately connected to ASDF which in turn is wedded at the hip to CLOS, 
loading Quicklisp in `~/.abclrc` effectively means that there are no 
time savings incurred by the autoload mechanism.

Note that I "believe" this to be the case, not having actually verified 
by appropriate profiling, which would probably be easy to do by some 
combination of setting the [`abcl.autoload.verbose`][1]: Java property 
to collect various profiles of with/without Quicklisp/ASDF.

[1]: http://abcl.org/trac/wiki/AbclJavaProperties

We would welcome any suggestions for strategies to decrease our this time.

"A screaming comes across the sky.  It has happened before, but there
is nothing to compare to it now."

More information about the armedbear-devel mailing list