This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Boehm-gc performance data


2006/6/23, Steven Bosscher <stevenb.gcc@gmail.com>:
Don't write off Boehm's GC just yet.  You can't expect to beat
something that has seen a lot of tuning for GCC with something that
you got working only a few days ago. There are a lot of special tricks
especially in ggc-page that may put it at an advantage, but with some
tuning perhaps you can get Boehm's to perform better for GCC.

But of course we are limited to tweaking usage of external Boehm's collector API, while internal collectors can have their internals hacked to support GCC's needs best. Nevertheless I will continue tweaking Boehm's GC: incremental collection, different allocation routines for large objects w/o pointers, weak pointer support, excluding roots for large static data...

For the locality thing: Have you already tried using something like
cachegrind or oprofile to compare the cache behavior of gcc with
Boehm's and gcc with ggc?

An excellent suggestion, although my primary working platform is valgrind-less Cygwin, but I will find a way to gather cache usage data.

What about allocation strategies?  Perhaps
that's another thing you could toy with to improve the peak memory
usage issue. I don't know how Boehm's GC works, but in ggc-page e.g.
all binary expression 'tree's are allocated on the same bag of pages,
which may help (or not, dunno).

There might be some options here: for objects that do not contain pointers special API can be used instead of generic one. Moreover I think that peak memory usage can be reduced by using Boehm's weak pointer facilities where they should be used: I suspect that some things are not collected just because they are cached.

Thanks for your comments,
--
Laurynas


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]