From: Richard Guenther <rguenth@tat.physik.uni-tuebingen.de>
To: Matt Austern <austern@apple.com>
Cc: gcc@gcc.gnu.org
Subject: Re: Huge compile time & run time performance regression 3.3 -> HEAD
Date: Mon, 19 May 2003 19:01:00 -0000 [thread overview]
Message-ID: <Pine.LNX.4.44.0305192043000.464-100000@goofy> (raw)
In-Reply-To: <110B848B-8A12-11D7-B0E8-000393B2ABA2@apple.com>
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.
next prev parent reply other threads:[~2003-05-19 18:49 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-05-18 16:10 Richard Guenther
2003-05-18 19:22 ` Richard Guenther
2003-05-18 19:31 ` Richard Guenther
2003-05-18 19:35 ` Richard Guenther
2003-05-19 16:18 ` Matt Austern
2003-05-19 19:01 ` Richard Guenther [this message]
2003-05-19 20:51 ` Richard Guenther
2003-05-19 21:04 ` Gabriel Dos Reis
2003-05-19 21:10 ` Richard Guenther
2003-05-19 21:14 ` Gabriel Dos Reis
2003-05-19 21:24 ` Richard Guenther
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Pine.LNX.4.44.0305192043000.464-100000@goofy \
--to=rguenth@tat.physik.uni-tuebingen.de \
--cc=austern@apple.com \
--cc=gcc@gcc.gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).