[Bug optimization/2692] excessive compile time with optimization
pinskia at gcc dot gnu dot org
gcc-bugzilla@gcc.gnu.org
Sun Nov 23 08:24:00 GMT 2003
------- Additional Comments From pinskia at gcc dot gnu dot org 2003-11-23 08:24 -------
It is cool that -O3 and -O2 are faster than -O1 (unit-at-a-time causes this)
The time has migrated to rename (for -O3 at least) registers on the mainline:
-O3 -fno-web:
Execution times (seconds)
garbage collection : 1.78 ( 2%) usr 0.01 ( 0%) sys 2.76 ( 2%) wall
callgraph construction: 0.09 ( 0%) usr 0.02 ( 1%) sys 0.34 ( 0%) wall
cfg construction : 0.15 ( 0%) usr 0.00 ( 0%) sys 0.19 ( 0%) wall
cfg cleanup : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.02 ( 0%) wall
trivially dead code : 0.34 ( 0%) usr 0.02 ( 1%) sys 0.70 ( 1%) wall
life analysis : 2.81 ( 3%) usr 0.00 ( 0%) sys 3.02 ( 3%) wall
life info update : 1.07 ( 1%) usr 0.02 ( 1%) sys 1.30 ( 1%) wall
alias analysis : 0.45 ( 0%) usr 0.05 ( 2%) sys 0.71 ( 1%) wall
register scan : 0.28 ( 0%) usr 0.00 ( 0%) sys 0.33 ( 0%) wall
rebuild jump labels : 0.10 ( 0%) usr 0.00 ( 0%) sys 0.13 ( 0%) wall
preprocessing : 0.05 ( 0%) usr 0.04 ( 2%) sys 0.15 ( 0%) wall
parser : 0.65 ( 1%) usr 0.20 ( 9%) sys 1.54 ( 1%) wall
name lookup : 0.16 ( 0%) usr 0.44 (19%) sys 0.65 ( 1%) wall
expand : 0.91 ( 1%) usr 0.12 ( 5%) sys 3.07 ( 3%) wall
integration : 1.11 ( 1%) usr 0.09 ( 4%) sys 1.55 ( 1%) wall
jump : 0.07 ( 0%) usr 0.00 ( 0%) sys 0.09 ( 0%) wall
CSE : 3.09 ( 3%) usr 0.07 ( 3%) sys 3.85 ( 3%) wall
loop analysis : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.02 ( 0%) wall
CSE 2 : 0.92 ( 1%) usr 0.02 ( 1%) sys 1.02 ( 1%) wall
branch prediction : 0.04 ( 0%) usr 0.00 ( 0%) sys 0.06 ( 0%) wall
flow analysis : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.03 ( 0%) wall
combiner : 15.43 (16%) usr 0.13 ( 6%) sys 18.74 (16%) wall
if-conversion : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.00 ( 0%) wall
regmove : 0.40 ( 0%) usr 0.01 ( 0%) sys 0.41 ( 0%) wall
scheduling : 8.13 ( 8%) usr 0.46 (20%) sys 9.42 ( 8%) wall
local alloc : 1.21 ( 1%) usr 0.02 ( 1%) sys 1.30 ( 1%) wall
global alloc : 2.52 ( 3%) usr 0.08 ( 3%) sys 2.72 ( 2%) wall
reload CSE regs : 0.94 ( 1%) usr 0.00 ( 0%) sys 0.97 ( 1%) wall
flow 2 : 0.05 ( 0%) usr 0.00 ( 0%) sys 0.05 ( 0%) wall
rename registers : 51.52 (53%) usr 0.07 ( 3%) sys 56.65 (48%) wall
scheduling 2 : 1.63 ( 2%) usr 0.39 (17%) sys 4.27 ( 4%) wall
shorten branches : 0.09 ( 0%) usr 0.01 ( 0%) sys 0.12 ( 0%) wall
final : 0.19 ( 0%) usr 0.02 ( 1%) sys 0.22 ( 0%) wall
rest of compilation : 0.45 ( 0%) usr 0.01 ( 0%) sys 0.50 ( 0%) wall
TOTAL : 96.78 2.33 116.99
-O0:
Execution times (seconds)
garbage collection : 0.13 ( 3%) usr 0.00 ( 0%) sys 0.14 ( 2%) wall
cfg construction : 0.04 ( 1%) usr 0.00 ( 0%) sys 0.02 ( 0%) wall
trivially dead code : 0.03 ( 1%) usr 0.00 ( 0%) sys 0.07 ( 1%) wall
life analysis : 0.41 (10%) usr 0.00 ( 0%) sys 0.50 ( 8%) wall
life info update : 0.21 ( 5%) usr 0.00 ( 0%) sys 0.23 ( 4%) wall
register scan : 0.05 ( 1%) usr 0.00 ( 0%) sys 0.05 ( 1%) wall
rebuild jump labels : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.04 ( 1%) wall
preprocessing : 0.04 ( 1%) usr 0.07 ( 9%) sys 0.11 ( 2%) wall
parser : 0.68 (16%) usr 0.18 (22%) sys 0.78 (12%) wall
name lookup : 0.19 ( 5%) usr 0.45 (56%) sys 0.78 (12%) wall
expand : 0.22 ( 5%) usr 0.00 ( 0%) sys 0.26 ( 4%) wall
integration : 0.08 ( 2%) usr 0.00 ( 0%) sys 0.09 ( 1%) wall
jump : 0.00 ( 0%) usr 0.01 ( 1%) sys 0.00 ( 0%) wall
flow analysis : 0.04 ( 1%) usr 0.00 ( 0%) sys 0.02 ( 0%) wall
local alloc : 0.73 (18%) usr 0.02 ( 3%) sys 1.21 (19%) wall
global alloc : 0.76 (18%) usr 0.02 ( 3%) sys 1.11 (18%) wall
flow 2 : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.00 ( 0%) wall
shorten branches : 0.07 ( 2%) usr 0.00 ( 0%) sys 0.07 ( 1%) wall
final : 0.17 ( 4%) usr 0.01 ( 1%) sys 0.35 ( 6%) wall
rest of compilation : 0.24 ( 6%) usr 0.00 ( 0%) sys 0.35 ( 6%) wall
TOTAL : 4.15 0.80 6.25
-O1:
Execution times (seconds)
garbage collection : 1.23 ( 1%) usr 0.00 ( 0%) sys 1.28 ( 1%) wall
cfg construction : 0.13 ( 0%) usr 0.00 ( 0%) sys 0.13 ( 0%) wall
cfg cleanup : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.02 ( 0%) wall
trivially dead code : 0.32 ( 0%) usr 0.01 ( 1%) sys 0.30 ( 0%) wall
life analysis : 3.45 ( 3%) usr 0.02 ( 1%) sys 4.09 ( 4%) wall
life info update : 1.02 ( 1%) usr 0.00 ( 0%) sys 1.05 ( 1%) wall
alias analysis : 0.41 ( 0%) usr 0.04 ( 3%) sys 0.47 ( 0%) wall
register scan : 0.25 ( 0%) usr 0.00 ( 0%) sys 0.28 ( 0%) wall
rebuild jump labels : 0.08 ( 0%) usr 0.00 ( 0%) sys 0.08 ( 0%) wall
preprocessing : 0.05 ( 0%) usr 0.07 ( 5%) sys 0.16 ( 0%) wall
parser : 0.61 ( 1%) usr 0.18 (13%) sys 0.75 ( 1%) wall
name lookup : 0.37 ( 0%) usr 0.34 (25%) sys 0.76 ( 1%) wall
expand : 0.66 ( 1%) usr 0.08 ( 6%) sys 0.74 ( 1%) wall
integration : 1.02 ( 1%) usr 0.02 ( 1%) sys 1.07 ( 1%) wall
jump : 0.04 ( 0%) usr 0.01 ( 1%) sys 0.03 ( 0%) wall
CSE : 3.27 ( 3%) usr 0.03 ( 2%) sys 3.39 ( 3%) wall
loop analysis : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.02 ( 0%) wall
branch prediction : 0.03 ( 0%) usr 0.00 ( 0%) sys 0.03 ( 0%) wall
flow analysis : 0.04 ( 0%) usr 0.00 ( 0%) sys 0.04 ( 0%) wall
combiner : 81.10 (79%) usr 0.20 (15%) sys 83.87 (77%) wall
if-conversion : 0.00 ( 0%) usr 0.00 ( 0%) sys 0.02 ( 0%) wall
local alloc : 1.62 ( 2%) usr 0.05 ( 4%) sys 1.67 ( 2%) wall
global alloc : 3.68 ( 4%) usr 0.23 (17%) sys 4.02 ( 4%) wall
reload CSE regs : 1.37 ( 1%) usr 0.01 ( 1%) sys 1.94 ( 2%) wall
flow 2 : 0.09 ( 0%) usr 0.00 ( 0%) sys 0.20 ( 0%) wall
rename registers : 0.47 ( 0%) usr 0.00 ( 0%) sys 0.60 ( 1%) wall
shorten branches : 0.17 ( 0%) usr 0.02 ( 1%) sys 0.23 ( 0%) wall
final : 0.43 ( 0%) usr 0.01 ( 1%) sys 0.61 ( 1%) wall
rest of compilation : 0.75 ( 1%) usr 0.02 ( 1%) sys 0.80 ( 1%) wall
TOTAL : 102.71 1.37 108.74
-O2:
Execution times (seconds)
garbage collection : 1.69 ( 4%) usr 0.00 ( 0%) sys 2.63 ( 4%) wall
callgraph construction: 0.08 ( 0%) usr 0.02 ( 1%) sys 0.11 ( 0%) wall
callgraph optimization: 0.01 ( 0%) usr 0.00 ( 0%) sys 0.00 ( 0%) wall
cfg construction : 0.13 ( 0%) usr 0.00 ( 0%) sys 0.13 ( 0%) wall
cfg cleanup : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.03 ( 0%) wall
trivially dead code : 0.34 ( 1%) usr 0.01 ( 0%) sys 0.38 ( 1%) wall
life analysis : 2.88 ( 6%) usr 0.03 ( 1%) sys 3.48 ( 6%) wall
life info update : 0.97 ( 2%) usr 0.00 ( 0%) sys 1.09 ( 2%) wall
alias analysis : 0.44 ( 1%) usr 0.07 ( 3%) sys 0.75 ( 1%) wall
register scan : 0.24 ( 1%) usr 0.01 ( 0%) sys 0.25 ( 0%) wall
rebuild jump labels : 0.10 ( 0%) usr 0.00 ( 0%) sys 0.12 ( 0%) wall
preprocessing : 0.07 ( 0%) usr 0.08 ( 4%) sys 0.13 ( 0%) wall
parser : 0.55 ( 1%) usr 0.14 ( 6%) sys 0.82 ( 1%) wall
name lookup : 0.27 ( 1%) usr 0.43 (19%) sys 0.63 ( 1%) wall
expand : 0.73 ( 2%) usr 0.05 ( 2%) sys 0.81 ( 1%) wall
integration : 1.04 ( 2%) usr 0.14 ( 6%) sys 1.24 ( 2%) wall
jump : 0.08 ( 0%) usr 0.02 ( 1%) sys 0.08 ( 0%) wall
CSE : 3.13 ( 7%) usr 0.06 ( 3%) sys 4.16 ( 7%) wall
loop analysis : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.03 ( 0%) wall
CSE 2 : 0.89 ( 2%) usr 0.02 ( 1%) sys 0.99 ( 2%) wall
branch prediction : 0.03 ( 0%) usr 0.01 ( 0%) sys 0.04 ( 0%) wall
flow analysis : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.03 ( 0%) wall
combiner : 15.77 (35%) usr 0.11 ( 5%) sys 18.25 (31%) wall
if-conversion : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall
regmove : 0.40 ( 1%) usr 0.00 ( 0%) sys 0.48 ( 1%) wall
scheduling : 8.15 (18%) usr 0.47 (21%) sys 9.75 (16%) wall
local alloc : 1.28 ( 3%) usr 0.02 ( 1%) sys 1.44 ( 2%) wall
global alloc : 2.46 ( 5%) usr 0.10 ( 4%) sys 3.05 ( 5%) wall
reload CSE regs : 0.96 ( 2%) usr 0.02 ( 1%) sys 1.17 ( 2%) wall
flow 2 : 0.04 ( 0%) usr 0.00 ( 0%) sys 0.05 ( 0%) wall
rename registers : 0.21 ( 0%) usr 0.00 ( 0%) sys 0.55 ( 1%) wall
scheduling 2 : 1.32 ( 3%) usr 0.41 (18%) sys 5.31 ( 9%) wall
shorten branches : 0.08 ( 0%) usr 0.00 ( 0%) sys 0.09 ( 0%) wall
final : 0.22 ( 0%) usr 0.02 ( 1%) sys 0.89 ( 1%) wall
rest of compilation : 0.46 ( 1%) usr 0.00 ( 0%) sys 0.52 ( 1%) wall
TOTAL : 45.16 2.24 59.57
-O1 -funit-at-a-time:
Execution times (seconds)
garbage collection : 1.18 ( 4%) usr 0.00 ( 0%) sys 1.22 ( 4%) wall
callgraph construction: 0.10 ( 0%) usr 0.01 ( 1%) sys 0.10 ( 0%) wall
cfg construction : 0.11 ( 0%) usr 0.00 ( 0%) sys 0.12 ( 0%) wall
cfg cleanup : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.02 ( 0%) wall
trivially dead code : 0.22 ( 1%) usr 0.00 ( 0%) sys 0.21 ( 1%) wall
life analysis : 2.70 ( 9%) usr 0.02 ( 2%) sys 2.75 ( 8%) wall
life info update : 0.54 ( 2%) usr 0.00 ( 0%) sys 0.56 ( 2%) wall
alias analysis : 0.27 ( 1%) usr 0.01 ( 1%) sys 0.31 ( 1%) wall
register scan : 0.17 ( 1%) usr 0.00 ( 0%) sys 0.17 ( 1%) wall
rebuild jump labels : 0.07 ( 0%) usr 0.00 ( 0%) sys 0.07 ( 0%) wall
preprocessing : 0.01 ( 0%) usr 0.12 (11%) sys 0.12 ( 0%) wall
parser : 0.51 ( 2%) usr 0.15 (14%) sys 0.81 ( 2%) wall
name lookup : 0.34 ( 1%) usr 0.38 (35%) sys 0.70 ( 2%) wall
expand : 0.71 ( 2%) usr 0.07 ( 6%) sys 0.78 ( 2%) wall
integration : 1.11 ( 4%) usr 0.08 ( 7%) sys 1.21 ( 4%) wall
jump : 0.03 ( 0%) usr 0.00 ( 0%) sys 0.04 ( 0%) wall
CSE : 2.00 ( 6%) usr 0.05 ( 5%) sys 2.09 ( 6%) wall
loop analysis : 0.00 ( 0%) usr 0.00 ( 0%) sys 0.02 ( 0%) wall
branch prediction : 0.04 ( 0%) usr 0.00 ( 0%) sys 0.04 ( 0%) wall
flow analysis : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.03 ( 0%) wall
combiner : 17.04 (54%) usr 0.07 ( 6%) sys 17.57 (53%) wall
local alloc : 0.75 ( 2%) usr 0.03 ( 3%) sys 0.80 ( 2%) wall
global alloc : 1.80 ( 6%) usr 0.04 ( 4%) sys 1.89 ( 6%) wall
reload CSE regs : 0.47 ( 2%) usr 0.00 ( 0%) sys 0.49 ( 1%) wall
flow 2 : 0.05 ( 0%) usr 0.00 ( 0%) sys 0.04 ( 0%) wall
rename registers : 0.23 ( 1%) usr 0.00 ( 0%) sys 0.23 ( 1%) wall
shorten branches : 0.08 ( 0%) usr 0.00 ( 0%) sys 0.08 ( 0%) wall
final : 0.18 ( 1%) usr 0.02 ( 2%) sys 0.21 ( 1%) wall
rest of compilation : 0.47 ( 2%) usr 0.01 ( 1%) sys 0.47 ( 1%) wall
TOTAL : 31.27 1.09 33.21
-O0 -funit-at-a-time:
Execution times (seconds)
garbage collection : 0.14 ( 3%) usr 0.00 ( 0%) sys 0.14 ( 2%) wall
callgraph construction: 0.10 ( 2%) usr 0.00 ( 0%) sys 0.11 ( 2%) wall
cfg construction : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.02 ( 0%) wall
trivially dead code : 0.03 ( 1%) usr 0.00 ( 0%) sys 0.02 ( 0%) wall
life analysis : 0.42 (10%) usr 0.01 ( 1%) sys 1.09 (15%) wall
life info update : 0.21 ( 5%) usr 0.00 ( 0%) sys 0.23 ( 3%) wall
register scan : 0.05 ( 1%) usr 0.01 ( 1%) sys 0.04 ( 1%) wall
rebuild jump labels : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.04 ( 1%) wall
preprocessing : 0.07 ( 2%) usr 0.06 ( 9%) sys 0.09 ( 1%) wall
parser : 0.64 (15%) usr 0.15 (22%) sys 0.80 (11%) wall
name lookup : 0.25 ( 6%) usr 0.36 (54%) sys 0.71 (10%) wall
expand : 0.22 ( 5%) usr 0.01 ( 1%) sys 0.24 ( 3%) wall
integration : 0.07 ( 2%) usr 0.01 ( 1%) sys 0.07 ( 1%) wall
jump : 0.00 ( 0%) usr 0.00 ( 0%) sys 0.02 ( 0%) wall
flow analysis : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.02 ( 0%) wall
local alloc : 0.74 (17%) usr 0.01 ( 1%) sys 0.80 (11%) wall
global alloc : 0.74 (17%) usr 0.02 ( 3%) sys 1.25 (17%) wall
flow 2 : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall
shorten branches : 0.07 ( 2%) usr 0.00 ( 0%) sys 0.08 ( 1%) wall
final : 0.20 ( 5%) usr 0.00 ( 0%) sys 1.01 (14%) wall
rest of compilation : 0.29 ( 7%) usr 0.00 ( 0%) sys 0.31 ( 4%) wall
TOTAL : 4.37 0.67 7.16
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=2692
More information about the Gcc-bugs
mailing list