This is the mail archive of the gcc-bugs@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]

[Bug c++/13776] [tree-ssa] Many C++ compile-time regression in 3.5-tree-ssa 040120


------- Additional Comments From rguenth at tat dot physik dot uni-tuebingen dot de  2004-03-14 13:54 -------
Subject: Re:  [tree-ssa] Many C++ compile-time regression in
 3.5-tree-ssa 040120

dberlin at gcc dot gnu dot org wrote:
> ------- Additional Comments From dberlin at gcc dot gnu dot org  2004-03-14 04:47 -------
> There are about 100 functions here with > a couple thousand bb's.
> PRE takes about 2-3 seconds for each of these functions.
> Which means i have to microoptimize it in order to get rid of the cumulative time effect.
> A lot of is it simply iterating over large lists looking for certain types of nodes (like EPHiS), where the 
> lists are O(n_basic_blocks), and we only need to look at 10 entries or so.  This doesn't matter when the 
> numbers are close, but when you have 8000 bb's to walk 20 times, instead of walking 40 entries 20 
> times, it matters.

The nice thing is, that with -fno-exceptions the results look a _lot_ 
better:

Execution times (seconds)
  garbage collection    :  21.13 ( 7%) usr   0.01 ( 0%) sys  21.20 ( 7%) 
wall
  callgraph construction:   1.45 ( 0%) usr   0.01 ( 0%) sys   1.46 ( 0%) 
wall
  callgraph optimization:   1.51 ( 0%) usr   0.09 ( 1%) sys   1.61 ( 1%) 
wall
  cfg construction      :   0.52 ( 0%) usr   0.05 ( 1%) sys   0.57 ( 0%) 
wall
  cfg cleanup           :   1.67 ( 1%) usr   0.00 ( 0%) sys   1.67 ( 1%) 
wall
  trivially dead code   :   2.27 ( 1%) usr   0.01 ( 0%) sys   2.28 ( 1%) 
wall
  life analysis         :   5.01 ( 2%) usr   0.00 ( 0%) sys   5.02 ( 2%) 
wall
  life info update      :   3.11 ( 1%) usr   0.00 ( 0%) sys   3.17 ( 1%) 
wall
  alias analysis        :   4.02 ( 1%) usr   0.01 ( 0%) sys   4.03 ( 1%) 
wall
  register scan         :   1.97 ( 1%) usr   0.00 ( 0%) sys   1.97 ( 1%) 
wall
  rebuild jump labels   :   0.54 ( 0%) usr   0.00 ( 0%) sys   0.54 ( 0%) 
wall
  preprocessing         :   0.69 ( 0%) usr   0.20 ( 3%) sys   1.72 ( 1%) 
wall
  parser                :  18.39 ( 6%) usr   1.03 (16%) sys  19.44 ( 6%) 
wall
  name lookup           :   6.74 ( 2%) usr   1.43 (23%) sys   8.18 ( 3%) 
wall
  integration           :  58.53 (19%) usr   0.43 ( 7%) sys  58.99 (19%) 
wall
  tree gimplify         :   3.43 ( 1%) usr   0.05 ( 1%) sys   3.48 ( 1%) 
wall
  tree eh               :   0.76 ( 0%) usr   0.00 ( 0%) sys   0.76 ( 0%) 
wall
  tree CFG construction :   1.54 ( 1%) usr   0.13 ( 2%) sys   1.67 ( 1%) 
wall
  tree CFG cleanup      :   1.84 ( 1%) usr   0.01 ( 0%) sys   1.85 ( 1%) 
wall
  tree PTA              :   0.68 ( 0%) usr   0.00 ( 0%) sys   0.68 ( 0%) 
wall
  tree alias analysis   :   1.07 ( 0%) usr   0.01 ( 0%) sys   1.08 ( 0%) 
wall
  tree PHI insertion    :   1.37 ( 0%) usr   0.06 ( 1%) sys   1.43 ( 0%) 
wall
  tree SSA rewrite      :   3.53 ( 1%) usr   0.06 ( 1%) sys   3.59 ( 1%) 
wall
  tree SSA other        :   4.69 ( 2%) usr   0.41 ( 7%) sys   5.12 ( 2%) 
wall
  tree operand scan     :   3.57 ( 1%) usr   0.27 ( 4%) sys   3.85 ( 1%) 
wall
  dominator optimization:  16.32 ( 5%) usr   0.52 ( 8%) sys  16.84 ( 5%) 
wall
  tree SRA              :   0.43 ( 0%) usr   0.00 ( 0%) sys   0.43 ( 0%) 
wall
  tree CCP              :   1.51 ( 0%) usr   0.01 ( 0%) sys   1.52 ( 0%) 
wall
  tree split crit edges :   0.16 ( 0%) usr   0.00 ( 0%) sys   0.16 ( 0%) 
wall
  tree PRE              :  17.34 ( 6%) usr   0.05 ( 1%) sys  17.40 ( 6%) 
wall
  tree linearize phis   :   0.01 ( 0%) usr   0.01 ( 0%) sys   0.02 ( 0%) 
wall
  tree forward propagate:   1.01 ( 0%) usr   0.00 ( 0%) sys   1.01 ( 0%) 
wall
  tree conservative DCE :   2.54 ( 1%) usr   0.01 ( 0%) sys   2.55 ( 1%) 
wall
  tree aggressive DCE   :   0.83 ( 0%) usr   0.00 ( 0%) sys   0.83 ( 0%) 
wall
  tree DSE              :   1.86 ( 1%) usr   0.07 ( 1%) sys   1.93 ( 1%) 
wall
  tree copy headers     :   1.39 ( 0%) usr   0.01 ( 0%) sys   1.40 ( 0%) 
wall
  tree SSA to normal    :   3.01 ( 1%) usr   0.04 ( 1%) sys   3.05 ( 1%) 
wall
  tree rename SSA copies:   0.69 ( 0%) usr   0.07 ( 1%) sys   0.77 ( 0%) 
wall
  dominance frontiers   :   0.18 ( 0%) usr   0.00 ( 0%) sys   0.18 ( 0%) 
wall
  control dependences   :   0.12 ( 0%) usr   0.00 ( 0%) sys   0.12 ( 0%) 
wall
  expand                :  31.02 (10%) usr   0.24 ( 4%) sys  31.41 (10%) 
wall
  varconst              :   0.94 ( 0%) usr   0.01 ( 0%) sys   0.99 ( 0%) 
wall
  jump                  :   1.77 ( 1%) usr   0.14 ( 2%) sys   1.97 ( 1%) 
wall
  CSE                   :   9.85 ( 3%) usr   0.03 ( 0%) sys   9.90 ( 3%) 
wall
  global CSE            :  14.32 ( 5%) usr   0.17 ( 3%) sys  14.49 ( 5%) 
wall
  loop analysis         :   4.19 ( 1%) usr   0.01 ( 0%) sys   4.21 ( 1%) 
wall
  bypass jumps          :   1.19 ( 0%) usr   0.01 ( 0%) sys   1.20 ( 0%) 
wall
  CSE 2                 :   4.24 ( 1%) usr   0.00 ( 0%) sys   4.24 ( 1%) 
wall
  branch prediction     :   1.49 ( 0%) usr   0.03 ( 0%) sys   1.54 ( 0%) 
wall
  flow analysis         :   0.12 ( 0%) usr   0.00 ( 0%) sys   0.14 ( 0%) 
wall
  combiner              :   3.80 ( 1%) usr   0.01 ( 0%) sys   3.82 ( 1%) 
wall
  if-conversion         :   0.61 ( 0%) usr   0.01 ( 0%) sys   0.63 ( 0%) 
wall
  regmove               :   2.17 ( 1%) usr   0.00 ( 0%) sys   2.20 ( 1%) 
wall
  local alloc           :   3.22 ( 1%) usr   0.03 ( 0%) sys   3.25 ( 1%) 
wall
  global alloc          :   7.58 ( 3%) usr   0.21 ( 3%) sys   7.79 ( 3%) 
wall
  reload CSE regs       :   3.25 ( 1%) usr   0.02 ( 0%) sys   3.27 ( 1%) 
wall
  flow 2                :   0.65 ( 0%) usr   0.00 ( 0%) sys   0.65 ( 0%) 
wall
  if-conversion 2       :   0.30 ( 0%) usr   0.00 ( 0%) sys   0.30 ( 0%) 
wall
  peephole 2            :   0.62 ( 0%) usr   0.02 ( 0%) sys   0.64 ( 0%) 
wall
  rename registers      :   0.97 ( 0%) usr   0.04 ( 1%) sys   1.01 ( 0%) 
wall
  scheduling 2          :   5.57 ( 2%) usr   0.04 ( 1%) sys   5.66 ( 2%) 
wall
  machine dep reorg     :   1.21 ( 0%) usr   0.00 ( 0%) sys   1.21 ( 0%) 
wall
  reorder blocks        :   0.78 ( 0%) usr   0.00 ( 0%) sys   0.80 ( 0%) 
wall
  shorten branches      :   0.82 ( 0%) usr   0.02 ( 0%) sys   0.84 ( 0%) 
wall
  reg stack             :   0.20 ( 0%) usr   0.00 ( 0%) sys   0.20 ( 0%) 
wall
  final                 :   1.41 ( 0%) usr   0.14 ( 2%) sys   1.56 ( 1%) 
wall
  rest of compilation   :   2.63 ( 1%) usr   0.04 ( 1%) sys   2.67 ( 1%) 
wall
  TOTAL                 : 302.38             6.29           310.24

So the question is, where is the difference and wether it needs to be 
there ;)

Richard.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=13776


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