[Ecls-list] Startup time

Waldek Hebisch hebisch at math.uni.wroc.pl
Tue Oct 14 03:01:49 UTC 2008


Juan Jose Garcia-Ripoll wrote:
> On Wed, May 28, 2008 at 2:42 PM, Waldek Hebisch
> <hebisch at math.uni.wroc.pl> wrote:
> > Currently, large program compiled by ECL start up visibly slower
> > than using other Lisps.
> 
> > Another reason is that loading large number of fasls takes a lot of time.
> > >From FriCAS prompt we load 1090 fasls:
> 
> Why don't you join all those fasl files into a single one using c:build?
>

I need to load some fasls before generating other ones, so I would
have to keep both .o files and fasls.  That would considerably
complicate build process and increase disc usage.  And during build
I would still have to load fasls.  Also, 1090 (now actually 1107) fasls
is a worst case, in normal runs I need between 100-200 fasls.

> > So, it seems that loading each fasl triggers garbage collection,
> > and those collections are responsible for substantial part
> > of the load time.  Is there a way to make garbage collection
> > more lazy?
> 
> Sure! Remove the si_gc(Ct) statement in src/c/load.d and please tell
> me whether this helps. I can remove it from the default configuration.
> 

I have now tried this modification on ECL 0.9l (CVS 2008-06-19 17:09)
Stock version gives me:

1) -> )lisp (time (dolist (el (directory "target/x86_64-unknown-linux/algebra/*.fas") ) (load el)))
real time : 27.550 secs
run time  : 24.789 secs
gc count  : 1108 times
consed    : 46275376 bytes

Modified version gives:

(1) -> )lisp (time (dolist (el (directory "target/x86_64-unknown-linux/algebra/*.fas") ) (load el)))
real time : 1.323 secs
run time  : 1.192 secs
gc count  : 7 times
consed    : 46293536 bytes

So the speed difference is substantial.

-- 
                              Waldek Hebisch
hebisch at math.uni.wroc.pl 




More information about the ecl-devel mailing list