This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Kudos to the gcc developers
- To: Brad Lucier <lucier at math dot purdue dot edu>
- Subject: Re: Kudos to the gcc developers
- From: "Zack Weinberg" <zackw at Stanford dot EDU>
- Date: Sun, 3 Dec 2000 11:12:17 -0800
- Cc: gcc at gcc dot gnu dot org
- References: <200011302340.eAUNeGg04116@polya.math.purdue.edu>
On Thu, Nov 30, 2000 at 06:40:16PM -0500, Brad Lucier wrote:
> > On Thu, Nov 30, 2000 at 11:45:25AM -0500, Brad Lucier wrote:
> > >
> > > 1. After Michael Matz's dominators calculation was integrated into
> > > gcc, I ran a profiled version to see what the next significant "hot
> > > spot" was in the compiler. I couldn't find one.
> >
> > Hm, this surprises me. The profiles I do show significant time
> > (i.e. >5%) in the garbage collector and sometimes in CSE (not GCSE).
>
> I didn't say there weren't any, just that I couldn't find one.
>
> I no longer have a profiled cc1 around, but here are some typical statistics:
I see now... your test cases have just a few huge functions in each
file. Mine have many tiny functions. Naturally the bottlenecks will
be different.
> Execution times (seconds)
> garbage collection : 1.03 ( 1%) usr 0.01 ( 0%) sys 1.04 ( 1%) wall
> preprocessing : 0.49 ( 1%) usr 0.16 ( 4%) sys 0.66 ( 1%) wall
> lexical analysis : 0.66 ( 1%) usr 0.31 ( 8%) sys 0.96 ( 1%) wall
> parser : 2.17 ( 3%) usr 0.26 ( 7%) sys 2.45 ( 3%) wall
> varconst : 0.11 ( 0%) usr 0.00 ( 0%) sys 0.11 ( 0%) wall
> integration : 0.00 ( 0%) usr 0.00 ( 0%) sys 0.00 ( 0%) wall
> jump : 6.20 ( 9%) usr 0.11 ( 3%) sys 6.32 ( 8%) wall
> CSE : 1.67 ( 2%) usr 0.00 ( 0%) sys 1.67 ( 2%) wall
> global CSE : 16.22 (23%) usr 0.43 (11%) sys 16.65 (22%) wall
> loop analysis : 0.15 ( 0%) usr 0.00 ( 0%) sys 0.15 ( 0%) wall
> CSE 2 : 1.50 ( 2%) usr 0.00 ( 0%) sys 1.50 ( 2%) wall
> flow analysis : 0.95 ( 1%) usr 0.24 ( 6%) sys 1.19 ( 2%) wall
> combiner : 1.02 ( 1%) usr 0.00 ( 0%) sys 1.03 ( 1%) wall
> if-conversion : 0.23 ( 0%) usr 0.02 ( 1%) sys 0.26 ( 0%) wall
> regmove : 0.40 ( 1%) usr 0.00 ( 0%) sys 0.40 ( 1%) wall
> scheduling : 6.01 ( 8%) usr 0.97 (26%) sys 6.98 ( 9%) wall
> local alloc : 8.76 (12%) usr 0.01 ( 0%) sys 8.77 (12%) wall
> global alloc : 2.18 ( 3%) usr 0.07 ( 2%) sys 2.25 ( 3%) wall
> reload CSE regs : 12.87 (18%) usr 0.02 ( 1%) sys 12.89 (17%) wall
> flow 2 : 1.54 ( 2%) usr 0.19 ( 5%) sys 1.73 ( 2%) wall
> if-conversion 2 : 0.05 ( 0%) usr 0.01 ( 0%) sys 0.06 ( 0%) wall
> peephole 2 : 0.11 ( 0%) usr 0.00 ( 0%) sys 0.11 ( 0%) wall
> scheduling 2 : 5.35 ( 8%) usr 0.86 (23%) sys 6.22 ( 8%) wall
> reorder blocks : 0.12 ( 0%) usr 0.00 ( 0%) sys 0.12 ( 0%) wall
> shorten branches : 0.09 ( 0%) usr 0.00 ( 0%) sys 0.10 ( 0%) wall
> final : 0.55 ( 1%) usr 0.01 ( 0%) sys 0.56 ( 1%) wall
> symout : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall
> rest of compilation : 0.60 ( 1%) usr 0.00 ( 0%) sys 0.60 ( 1%) wall
> TOTAL : 71.16 3.77 74.91
But it looks to me like GCSE and reload-CSE are the places to speed
up. Of course I know nothing about what's going on in there, maybe
they're already as fast as they can get.
zw