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]

Boehm-gc performance data


I'm still waiting for the testsuite to complete (it's been running
just for about 24 hours so far). In the meanwhile I'd like to discuss
the first performance results, which I've put on the Wiki:

First number is GCC with Boehm's GC and the number in parentheses is
GCC with page collector.

combine.c: top mem usage: 52180k (13915k). GC execution time 0.66
(0.61) 4% (4%). User running time: 0m16 (0m14).

reload.c: top mem usage: 35764k (10049k). GC execution time 0.44
(0.53) 5% (6%). User running time: 0m10 (0m9).

PR/8361 (C++): top mem usage: 289128k (62510k). GC execution time 3.97
(5.77) 5% (9%). User running time: 1m17 (1m6). System running time:
0m2 (0m2).

PR/19614 (C++): top mem usage: 289140k (139520k). GC execution time 5
(4.68) 15% (17%). User running time: 0m35 (0m27). System running time:
0m1 (0m1).

My observations and some hypotheses:
1. Top memory usage is rather bad - the collector is not aggresive as
it should. I've done sanity check and verified that the number of GC
allocated bytes is the same in both cases.
2. GC part in total runtime is decreased but the total runtime is
increased - caused by effective GC algorithms, but worse allocated
data locality?

Why this data might have some inaccuracies:
1. Debugging version of Boehm's GC API is used now, though the
collector itself is not compiled with debug options. I will re-run
tests with non-debugging API, but I don't expect significant impact on
results.

2. Decision when to collect is made a bit differently than with old
collectors. They track increase in number of allocated bytes in the GC
heap, on the other hand I track increase of the GC heap size itself.
Again, it will be easy to re-run tests with other way around.

All in all, IMHO this data favours against Boehm's GC in GCC. But
before deciding I would like to enable generational GC features, if
that will help with run time. On the other hand, I don't see how peak
memory usage could be reduced.

What do you think?

--
Laurynas


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