[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