This is the mail archive of the
mailing list for the GCC project.
Re: [PATCH] Reduce GC overhead by introducing extra bins for function and basic_block
On Mon, 19 Jun 2006, Mark Mitchell wrote:
> Richard Guenther wrote:
> > This addresses the fact that struct function is at the moment (on 32bit
> > platforms) 264 bytes large and allocated from the 512 bytes bucket, which
> > is quite a large overhead. The same holds true for basic_block as of
> > detailed memory reporting.
> > Unfortunately(?) to work properly, the size_lookup array needs to be
> > extended for this (I also made the checks for out-of range sizes <
> > rather than <=, because the latter will access the array out-of-bounds).
> > More objects often allocated with non-neglible overhead are
> > struct var_ann_d, struct tree_ssa_name and phi nodes with two arguments.
> > But this quickly leads to a huge number of entries in
> > extra_order_size_table, and the GC machinery does not explicitly handle
> > duplicate sizes (i.e. it will simply get empty bins resulting from dups).
> > Bootstrapped and tested on x86_64-unknown-linux-gnu.
> > Ok for mainline?
> This seems like a good idea -- but what memory savings have you observed
> on what test cases?
There is a slight peak memory drop for tramp3d-v4 from 449MB to 447MB, but
it mainly reduces GC allocation overhead (same testcase). Namely, before
the patches (this one and the cp_lexer buffer adjustment) we have
source location Garbage Freed Leak Overhead Times
Total 1182395952 260047664 102837539 81528691 34856084
after the patches
Total 1118949500 197905976 98765340 26595804 34870857
Richard Guenther <firstname.lastname@example.org>
Novell / SUSE Labs