My cl-launch scripts can take one second.
I can trim a half second off that with a disk-cache[2] of *source-registry*.
Tedious details follow.
My cl-launch install defaults to using ccl. My ccl install is currently HEAD.
My current setup has 3.8K working directories, which compute-source-registry scans.
Ok I have three little bash functions[1] to time things. try-ccl- — run ccl with —no-init try-cl — run cl-launch, so no init file; but it will load asdf. try-ccl — run ccl with standard quicklisp init file
Without the disk cache. try-ccl- 0.03 seconds try-cl 1 seconds try-ccl 1 seconds
With the disk cache: try-ccl- 0.03 seconds try-cl 0.5 seconds try-ccl 0.5 seconds
These #’s are gleaned from batches of 10 runs so things can settle.
Theories for that remaining half a second need looking into.
- ben
[1] The three bash functions try-ccl-(){ (time ccl --no-init --eval '(progn (print (lisp-implementation-type)) (quit))') 2>&1 | grep real ; } try-ccl(){ (time ccl --eval '(progn (print (lisp-implementation-type)) (quit))') 2>&1 | grep real ; } try-cl(){ (time cl -ip '(lisp-implementation-type)') 2>&1 | grep real ; }
[2] A proof of concept disk cache...
https://gist.github.com/bhyde/526c5acb38f341d60dba
So, anytime somebody rearranges the set of asdf systems they are expected to invoke reset-quickasdf.
quickasdf horrible name - but it bemused me at the time.
Calling initialize-source-registry directly from the repl takes 0.47 seconds without the diskcache and .004 seconds with it.