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