guile-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: GC improvements


From: Han-Wen Nienhuys
Subject: Re: GC improvements
Date: Fri, 23 Dec 2005 11:29:57 +0000 (UTC)

In article <address@hidden>,
Ludovic Courtès <address@hidden> wrote:
>The workload I used is quite similar to what happens at startup time:
>new objects are created, new symbols are defined, and that's it.  The
>symbols created (and even the numbers created) are expected to stay
>alive until the end of the program.  Thus, intuitively, one might say
>that there is nothing to collect in this program, so no need to
>mark/sweep all the time.

I think that GUILE creates garbage as a side effect of evaluating
code. If think that nothing needs to be swept, try disabling GC during
startup, and see how well it performs memory-wise.

>Therefore, my question is: how can we improve on this?
>
>As I understand it, generational GC could help solve this.  However,
>being unfamiliar with this, I fail to see how this could be integrated,
>and how much work is required.

For startup time, I think the best (as in: quickest) would be undump a
previous run, instead of recalculating all the initialization on every
run. Not only does this save on GC time, it also bypasses all evaluation.
Isn't this what Emacs also does?

Personally, I think it is much more interesting to optimize for
efficiency on longer projects.

BTW, I propose that the GC yields are changed a bit. I've heard other
people comment that GUILE is dead slow compared to PLT Scheme. I've
investigated with one Boehm's GC benchmarks, and for this case it
turns out that increasing GC minimum yields sped GUILE up by a factor
1.5 or so.


Han-Wen


P.S. what's keeping back the GUILE 1.8 release?






reply via email to

[Prev in Thread] Current Thread [Next in Thread]