[Ecls-list] profiling Ecl

Jachym Holecek freza at psi.cz
Fri Mar 11 12:48:16 UTC 2005

> >I've built profiled version of ecl [1] and found that biggest offenders
> >are memset(), _sys___sigprocmask14(), strncmp(), in this order. The
> >sigprocmask() comes exclusively from from setjmp()/longjmp() [2]. I'm
> >planning to dissect the results in more detail sometime, umm, later ;-).
> I wait for these results. From what you show it seems that the garbage 
> collector is indeed not the major problem, but I am definitely puzzled 
> about the memset/strncmp calls, which are almost nowhere used in ECL (in 
> particular "strncmp"!). As for the *sigprocmask*, they can be probably 
> removed by a careful replacement of setjmp/longjmp with the versions 
> that do not save signals (_setjmp/_longjmp in some platforms).

Actually, I see a check for _*jmp() in src/configure (ECL_{SET,GET}JMP),
but the conditional is inverted ("if have _*jmp() use *jmp(), otherwise
use _*jmp()"), which seems broken (or maybe I miss something?). After I
changed the statement, ECL was able to bootstrap and sigprocmask() no
longer appears in the figures. I'm building non-profiled version now to
see how this improves cl_boot() time.

So, is current _*jmp() conditional polarity a bug or a feature? Are
there some pre-baked tests I should run to make sure ECL behaves correctly
with the change? [*]

		-- Jachym Holecek

[*] I'm new to Lisp, so I don't know of any.

More information about the ecl-devel mailing list