[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