Ben Wing wrote:
> So far, it seems that everyone's profiling on the Lisp
level. But C
> level profiling could give much better results. Has anyone successfully
> used Gprof or the VC++ tools for doing C-level profiling? When i tried
> in the past, i got stuck; things crashed and i couldn't get them to
> work. Any success stories and instructions telling what exactly to do?
then, three weeks ago I wrote:
Under Linux you could use oprofile
(
http://oprofile.sourceforge.net/download/). It isn't difficult to use
and does not require profiler instrumentation when compiling (debugging
information is useful, though). It also profiles the entire system, so
it can show you how much time you spend running X11 functions.
Well, Ben had the right idea, so I actually went ahead and did some
profiling. It turned out that the major CPU-eater in modern builds was
mc-alloc and gc.
So, I went ahead and tried to see how I could make it faster.
The summary: relatively minor reworking of mc-alloc.c allows for about a
5% total performance increase as measured by my personal "gnus build
benchmark". Percentages for get_mark_bit, mc_alloc_1, sweep_page were
roughly halved.
Some of my tweaks are specific to 32-bit architectures at the moment,
especially one that replaces an expensive divide with a multiply, two
lookups and a shift.
I'll probably send the patch to Marcus Crestani, as it isn't
production-ready yet, it's closer to a proof-of-concept.
Does anybody have a good GC benchmark that I could use?
--J.