tree-ssa performance
Gerald Pfeifer
pfeifer@dbai.tuwien.ac.at
Tue Jun 10 23:36:00 GMT 2003
On Tue, 10 Jun 2003, Steven Bosscher wrote:
> What is so different about C++ then that it would require so much more
> memory than just C? Gerald already has a 18% slowdown at -O0, surely
> gimplification is not _that_ expensive?
>
> Gerald, do you have the output of -fmem-report?
Yup, the one below is for -O1 -ftime-report. Clearly, garbage collection
is one responsible party again, but I wonder why I'm seing so much system
time.
First comes mainline, then tree-ssa.
Execution times (seconds)
garbage collection : 9.59 (17%) usr 0.02 ( 0%) sys 9.65 ( 8%) wall
cfg construction : 1.09 ( 2%) usr 0.07 ( 0%) sys 1.23 ( 1%) wall
cfg cleanup : 1.76 ( 3%) usr 0.12 ( 0%) sys 1.90 ( 2%) wall
trivially dead code : 0.93 ( 2%) usr 0.04 ( 0%) sys 0.90 ( 1%) wall
life analysis : 2.81 ( 5%) usr 0.11 ( 0%) sys 3.12 ( 3%) wall
life info update : 0.96 ( 2%) usr 0.02 ( 0%) sys 0.88 ( 1%) wall
alias analysis : 1.05 ( 2%) usr 0.02 ( 0%) sys 1.03 ( 1%) wall
register scan : 0.53 ( 1%) usr 0.05 ( 0%) sys 0.65 ( 1%) wall
rebuild jump labels : 0.34 ( 1%) usr 0.07 ( 0%) sys 0.30 ( 0%) wall
preprocessing : 0.29 ( 1%) usr 2.46 ( 4%) sys 2.25 ( 2%) wall
parser : 5.12 ( 9%) usr 19.35 (34%) sys 25.47 (22%) wall
name lookup : 7.77 (14%) usr 33.80 (59%) sys 41.38 (36%) wall
expand : 5.22 ( 9%) usr 0.35 ( 1%) sys 5.71 ( 5%) wall
varconst : 0.12 ( 0%) usr 0.06 ( 0%) sys 0.34 ( 0%) wall
integration : 2.46 ( 4%) usr 0.22 ( 0%) sys 2.85 ( 2%) wall
jump : 0.25 ( 0%) usr 0.02 ( 0%) sys 0.29 ( 0%) wall
CSE : 1.99 ( 4%) usr 0.05 ( 0%) sys 2.12 ( 2%) wall
loop analysis : 0.30 ( 1%) usr 0.03 ( 0%) sys 0.27 ( 0%) wall
branch prediction : 0.84 ( 2%) usr 0.03 ( 0%) sys 0.66 ( 1%) wall
flow analysis : 0.09 ( 0%) usr 0.02 ( 0%) sys 0.15 ( 0%) wall
combiner : 3.62 ( 6%) usr 0.05 ( 0%) sys 3.58 ( 3%) wall
if-conversion : 0.18 ( 0%) usr 0.01 ( 0%) sys 0.23 ( 0%) wall
mode switching : 0.00 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall
scheduling : 0.00 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall
local alloc : 0.73 ( 1%) usr 0.02 ( 0%) sys 0.95 ( 1%) wall
global alloc : 3.19 ( 6%) usr 0.09 ( 0%) sys 3.35 ( 3%) wall
reload CSE regs : 0.70 ( 1%) usr 0.02 ( 0%) sys 0.71 ( 1%) wall
flow 2 : 0.42 ( 1%) usr 0.05 ( 0%) sys 0.45 ( 0%) wall
if-conversion 2 : 0.10 ( 0%) usr 0.00 ( 0%) sys 0.07 ( 0%) wall
rename registers : 1.03 ( 2%) usr 0.02 ( 0%) sys 1.02 ( 1%) wall
reorder blocks : 0.00 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall
shorten branches : 0.37 ( 1%) usr 0.02 ( 0%) sys 0.30 ( 0%) wall
final : 0.63 ( 1%) usr 0.04 ( 0%) sys 0.63 ( 1%) wall
symout : 0.02 ( 0%) usr 0.03 ( 0%) sys 0.08 ( 0%) wall
rest of compilation : 1.70 ( 3%) usr 0.10 ( 0%) sys 2.20 ( 2%) wall
TOTAL : 56.19 57.38 115.52
117.08 real 56.82 user 57.61 sys
Execution times (seconds)
garbage collection : 17.90 (19%) usr 0.11 ( 0%) sys 17.95 (12%) wall
cfg construction : 0.72 ( 1%) usr 0.02 ( 0%) sys 0.67 ( 0%) wall
cfg cleanup : 1.49 ( 2%) usr 0.07 ( 0%) sys 1.54 ( 1%) wall
trivially dead code : 0.79 ( 1%) usr 0.02 ( 0%) sys 0.84 ( 1%) wall
life analysis : 2.88 ( 3%) usr 0.08 ( 0%) sys 2.98 ( 2%) wall
life info update : 0.98 ( 1%) usr 0.02 ( 0%) sys 1.00 ( 1%) wall
alias analysis : 1.14 ( 1%) usr 0.08 ( 0%) sys 0.98 ( 1%) wall
register scan : 0.57 ( 1%) usr 0.04 ( 0%) sys 0.64 ( 0%) wall
rebuild jump labels : 0.26 ( 0%) usr 0.02 ( 0%) sys 0.34 ( 0%) wall
preprocessing : 0.33 ( 0%) usr 2.33 ( 4%) sys 2.50 ( 2%) wall
parser : 6.16 ( 7%) usr 19.37 (32%) sys 24.71 (16%) wall
name lookup : 7.09 ( 8%) usr 34.57 (58%) sys 43.11 (28%) wall
integration : 5.48 ( 6%) usr 0.40 ( 1%) sys 5.77 ( 4%) wall
tree gimplify : 1.25 ( 1%) usr 0.85 ( 1%) sys 1.76 ( 1%) wall
tree CFG construction : 0.95 ( 1%) usr 0.05 ( 0%) sys 0.97 ( 1%) wall
tree CFG cleanup : 0.24 ( 0%) usr 0.03 ( 0%) sys 0.36 ( 0%) wall
tree alias analysis : 2.09 ( 2%) usr 0.07 ( 0%) sys 2.08 ( 1%) wall
tree PHI insertion : 2.95 ( 3%) usr 0.07 ( 0%) sys 3.02 ( 2%) wall
tree SSA rewrite : 3.10 ( 3%) usr 0.12 ( 0%) sys 3.20 ( 2%) wall
tree SSA other : 3.22 ( 3%) usr 0.16 ( 0%) sys 3.44 ( 2%) wall
tree SSA to normal : 3.59 ( 4%) usr 0.13 ( 0%) sys 3.67 ( 2%) wall
tree CCP : 4.67 ( 5%) usr 0.09 ( 0%) sys 4.77 ( 3%) wall
tree COPYPROP : 0.55 ( 1%) usr 0.01 ( 0%) sys 0.53 ( 0%) wall
tree DCE : 3.48 ( 4%) usr 0.04 ( 0%) sys 3.57 ( 2%) wall
dominance frontiers : 0.14 ( 0%) usr 0.01 ( 0%) sys 0.12 ( 0%) wall
expand : 4.04 ( 4%) usr 0.15 ( 0%) sys 4.22 ( 3%) wall
varconst : 0.10 ( 0%) usr 0.15 ( 0%) sys 0.29 ( 0%) wall
jump : 0.15 ( 0%) usr 0.01 ( 0%) sys 0.16 ( 0%) wall
CSE : 2.04 ( 2%) usr 0.02 ( 0%) sys 2.10 ( 1%) wall
loop analysis : 0.27 ( 0%) usr 0.01 ( 0%) sys 0.31 ( 0%) wall
branch prediction : 0.62 ( 1%) usr 0.03 ( 0%) sys 0.79 ( 1%) wall
flow analysis : 0.12 ( 0%) usr 0.00 ( 0%) sys 0.15 ( 0%) wall
combiner : 3.46 ( 4%) usr 0.05 ( 0%) sys 3.55 ( 2%) wall
if-conversion : 0.21 ( 0%) usr 0.02 ( 0%) sys 0.16 ( 0%) wall
mode switching : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall
scheduling : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.00 ( 0%) wall
local alloc : 0.85 ( 1%) usr 0.28 ( 0%) sys 1.15 ( 1%) wall
global alloc : 3.63 ( 4%) usr 0.08 ( 0%) sys 3.72 ( 2%) wall
reload CSE regs : 0.70 ( 1%) usr 0.01 ( 0%) sys 0.71 ( 0%) wall
flow 2 : 0.34 ( 0%) usr 0.00 ( 0%) sys 0.38 ( 0%) wall
if-conversion 2 : 0.05 ( 0%) usr 0.00 ( 0%) sys 0.05 ( 0%) wall
rename registers : 1.24 ( 1%) usr 0.03 ( 0%) sys 1.25 ( 1%) wall
machine dep reorg : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall
reorder blocks : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.02 ( 0%) wall
shorten branches : 0.30 ( 0%) usr 0.02 ( 0%) sys 0.34 ( 0%) wall
final : 0.55 ( 1%) usr 0.03 ( 0%) sys 0.55 ( 0%) wall
symout : 0.02 ( 0%) usr 0.02 ( 0%) sys 0.03 ( 0%) wall
rest of compilation : 1.61 ( 2%) usr 0.13 ( 0%) sys 1.75 ( 1%) wall
TOTAL : 92.37 59.80 152.21
153.30 real 92.95 user 60.20 sys
More information about the Gcc
mailing list