guile-devel
[Top][All Lists]
Advanced

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

Re: Comparing Guile's GC with BDW-GC


From: Ludovic Courtès
Subject: Re: Comparing Guile's GC with BDW-GC
Date: Sat, 08 Nov 2008 13:16:15 +0100
User-agent: Gnus/5.11 (Gnus v5.11) Emacs/22.3 (gnu/linux)

Hi Neil,

"Neil Jerram" <address@hidden> writes:

> On 05/11/2008, Ludovic Courtès <address@hidden> wrote:

>>  I finally [0] conducted experiments to compare Guile's GC with my port
>>  of Guile to the Boehm-Demers-Weiser GC (BDW-GC).  The code for that port
>>  is not currently available on-line but I'd be happy to push it somewhere
>>  (would Guile's repo at Savannah be a good fit?).
>
> I don't see why not...

An argument could be "it's not exciting and it increases the repository
size."  :-)

But if nobody says it, I'm happy to proceed.

>>  For `string', I expect it to be partly due to the fact that under
>>  unmodified Guile it's libc's malloc that's exercised more than the GC
>>  itself (since stringbuf contents are allocated with `malloc ()').
>
> How is that different in BDW-GC Guile?

(I was actually referring to execution time mainly.)

In BDW-GC Guile, everything is allocated using the GC primitives
(GC_malloc), and libc's `malloc ()' isn't used at all.

Note that this doesn't explain the significantly larger heap of Guile
compared to BDW-GC.  One explanation could be incorrect stats that lead
Guile's GC to think there's plenty of heap available.

> It's always possible to trade execution for heap, isn't it?  For
> example, I presume we could configure current Guile so as to gc less?

I presume so, but I don't know exactly how: there are too many
(environment) variables to be tweaked, and their effect on heap usage or
execution time is not obvious (see, e.g.,
http://thread.gmane.org/gmane.lisp.guile.devel/6699/focus=6836).

I forgot to mention that FSD = 3 and non-incremental mode is the default
for BDW-GC.

> In these results, it looks like Guile is quicker for a given heap size
> - or smaller for a given execution time.

Well, the benchmarks only show that Guile by default is slower and uses
less heap than BDW-GC, so you're jumping to the conclusions.

It should be noted that this series of benchmarks does not particularly
stress the GC and uses a small heap (less than 2 MiB, except for
`guile-test'), unlike `gcbench' and `string'.

I noticed that Will Clinger et al. collected GC benchmarks at
http://www.ccs.neu.edu/home/will/GC/sourcecode.html .  I'll run a series
of measurements with these.

> Do you just mean having to maintain the code?

I'll write a separate note for that.

Thanks!

Ludo'.





reply via email to

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