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: Huge compile time & run time performance regression 3.3 -> HEAD


On Mon, 19 May 2003, Matt Austern wrote:

> On Sunday, May 18, 2003, at 08:45  AM, Richard Guenther wrote:
>
> > Hi!
> >
> > As 3.3 is now out, I start comparing 3.3 to HEAD wrt compile time
> > performance and performance of the resulting code. As always these
> > comparisons are for a POOMA based scientific application.
> >
> > I experience a 100% compile time regression (673.50s -> 1284.48s) and
> > a 12% runtime performance regression (150s -> 171s) when comparing
> > gcc3.3 to HEAD.
> >
> > Time reports follow, the most prominent regressions are expand, global
> > CSE
> > (>300%!), loop analysis and branch prediction.
> >
> > Compile options are -ftemplate-depth-80 -fno-exceptions -O2
> > -march=athlon
> > -funroll-loops -fomit-frame-pointer
>
> Do you see any compile time regressions at -O0?
>
> (I'm asking for the obvious reason: trying to find out how much work we
> need to do in the front end as opposed to the back end.)

For 3.3 with -O0 I get:

Execution times (seconds)
 garbage collection    :  13.19 ( 2%) usr   0.00 ( 0%) sys  12.50 ( 2%)
wall
 cfg construction      :   2.11 ( 0%) usr   0.02 ( 1%) sys   2.50 ( 0%)
wall
 cfg cleanup           :   0.83 ( 0%) usr   0.00 ( 0%) sys   1.00 ( 0%)
wall
 trivially dead code   :   1.68 ( 0%) usr   0.00 ( 0%) sys   2.00 ( 0%)
wall
 life analysis         :   5.30 ( 1%) usr   0.01 ( 0%) sys   7.00 ( 1%)
wall
 life info update      :   1.46 ( 0%) usr   0.00 ( 0%) sys   1.00 ( 0%)
wall
 preprocessing         :   0.57 ( 0%) usr   0.24 ( 8%) sys   0.50 ( 0%)
wall
 lexical analysis      :   0.44 ( 0%) usr   0.18 ( 6%) sys   0.50 ( 0%)
wall
 parser                :  14.73 ( 2%) usr   0.54 (17%) sys  14.50 ( 2%)
wall
 name lookup           :   7.38 ( 1%) usr   0.95 (30%) sys   7.50 ( 1%)
wall
 expand                : 539.94 (81%) usr   0.54 (17%) sys 540.00 (81%)
wall
 varconst              :   0.72 ( 0%) usr   0.01 ( 0%) sys   1.00 ( 0%)
wall
 integration           :  19.82 ( 3%) usr   0.19 ( 6%) sys  19.50 ( 3%)
wall
 jump                  :   2.51 ( 0%) usr   0.00 ( 0%) sys   3.50 ( 1%)
wall
 flow analysis         :   0.89 ( 0%) usr   0.00 ( 0%) sys   0.00 ( 0%)
wall
 mode switching        :   2.33 ( 0%) usr   0.01 ( 0%) sys   3.00 ( 0%)
wall
 scheduling            :   0.01 ( 0%) usr   0.00 ( 0%) sys   0.00 ( 0%)
wall
 local alloc           :   9.75 ( 1%) usr   0.01 ( 0%) sys  11.00 ( 2%)
wall
 global alloc          :  23.63 ( 4%) usr   0.15 ( 5%) sys  22.50 ( 3%)
wall
 flow 2                :   1.59 ( 0%) usr   0.01 ( 0%) sys   0.00 ( 0%)
wall
 shorten branches      :   2.15 ( 0%) usr   0.00 ( 0%) sys   1.50 ( 0%)
wall
 reg stack             :   1.48 ( 0%) usr   0.00 ( 0%) sys   3.00 ( 0%)
wall
 final                 :   3.79 ( 1%) usr   0.31 (10%) sys   6.50 ( 1%)
wall
 rest of compilation   :  10.17 ( 2%) usr   0.02 ( 1%) sys  10.00 ( 1%)
wall
 TOTAL                 : 666.48             3.19           670.50

For 3.4:

Execution times (seconds)
 garbage collection    :  12.27 ( 2%) usr   0.10 ( 0%) sys  12.38 ( 2%)
wall
 cfg construction      :   2.25 ( 0%) usr   0.10 ( 0%) sys   2.30 ( 0%)
wall
 cfg cleanup           :   0.99 ( 0%) usr   0.01 ( 0%) sys   0.89 ( 0%)
wall
 trivially dead code   :   1.31 ( 0%) usr   0.00 ( 0%) sys   1.39 ( 0%)
wall
 life analysis         :   5.39 ( 1%) usr   0.12 ( 1%) sys   5.65 ( 1%)
wall
 life info update      :   1.42 ( 0%) usr   0.00 ( 0%) sys   1.49 ( 0%)
wall
 register scan         :   1.34 ( 0%) usr   0.02 ( 0%) sys   1.33 ( 0%)
wall
 rebuild jump labels   :   1.22 ( 0%) usr   0.00 ( 0%) sys   1.23 ( 0%)
wall
 preprocessing         :   0.44 ( 0%) usr   0.17 ( 1%) sys   0.91 ( 0%)
wall
 parser                :  14.65 ( 2%) usr   0.65 ( 3%) sys  14.82 ( 2%)
wall
 name lookup           :   9.66 ( 1%) usr   0.77 ( 4%) sys  10.66 ( 1%)
wall
 expand                : 555.99 (78%) usr  11.15 (54%) sys 567.86 (78%)
wall
 varconst              :   0.73 ( 0%) usr   0.01 ( 0%) sys   0.71 ( 0%)
wall
 integration           :  17.85 ( 3%) usr   6.29 (30%) sys  24.09 ( 3%)
wall
 jump                  :   0.79 ( 0%) usr   0.04 ( 0%) sys   0.86 ( 0%)
wall
 flow analysis         :   0.66 ( 0%) usr   0.00 ( 0%) sys   0.85 ( 0%)
wall
 mode switching        :   0.02 ( 0%) usr   0.00 ( 0%) sys   0.05 ( 0%)
wall
 scheduling            :   0.01 ( 0%) usr   0.01 ( 0%) sys   0.00 ( 0%)
wall
 local alloc           :  37.47 ( 5%) usr   0.03 ( 0%) sys  37.60 ( 5%)
wall
 global alloc          :  24.17 ( 3%) usr   0.80 ( 4%) sys  24.83 ( 3%)
wall
 flow 2                :   1.53 ( 0%) usr   0.07 ( 0%) sys   1.56 ( 0%)
wall
 machine dep reorg     :   0.01 ( 0%) usr   0.00 ( 0%) sys   0.01 ( 0%)
wall
 shorten branches      :   2.60 ( 0%) usr   0.04 ( 0%) sys   2.79 ( 0%)
wall
 reg stack             :   1.31 ( 0%) usr   0.00 ( 0%) sys   1.35 ( 0%)
wall
 final                 :   4.38 ( 1%) usr   0.22 ( 1%) sys   4.62 ( 1%)
wall
 symout                :   0.00 ( 0%) usr   0.01 ( 0%) sys   0.00 ( 0%)
wall
 rest of compilation   :  10.13 ( 1%) usr   0.22 ( 1%) sys   9.96 ( 1%)
wall
 TOTAL                 : 708.60            20.83           730.22

Thats about 60s difference in wall clock time. Is it true, that even at
-O0 -finline is set?

Richard.


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