[Top][All Lists]
[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'.