Compilation performance comparison of 3.5.0 and TreeSSA trees on MICO sources as requested in: [tree-ssa] Merge status 2004-05-03

Daniel Berlin dberlin@dberlin.org
Wed May 5 19:59:00 GMT 2004


On May 5, 2004, at 3:14 PM, Karel Gardas wrote:

>
> Folks,
>
> as you have requested log files of various builds with -ftime-report
> option used are here: http://mico.org/~karel/logs.tar.bz2. I have also
> added one build for -O2 -foptions, where -foptions are options 
> suggested
> by Steven Bosscher and Jeff Law. What surprised me a bit is that there 
> is
> so big difference between build w/ and w/o -ftime-report option from
> compilation performance point of view. As such I have also included
> original logs (w/o -ftime-report) from which I have provided summary 
> table
> yesterday.
>

Note that in almost all of his cases, the parser takes at least 15%, 
and usually 30%+ of the time of compilation.
>
This is true even for both the small, medium, and the  large cases.
parser                :   0.14 (15%) usr   0.01 (14%) sys   0.18 (17%) 
wall
  parser                :   0.15 (10%) usr   0.02 (25%) sys   0.17 (11%) 
wall
  parser                :   0.15 (23%) usr   0.02 (33%) sys   0.15 (20%) 
wall
  parser                :   0.15 (26%) usr   0.02 (33%) sys   0.17 (25%) 
wall
  parser                :   0.16 (16%) usr   0.01 (10%) sys   0.23 (20%) 
wall
  parser                :   0.17 (11%) usr   0.03 (38%) sys   0.21 (12%) 
wall
  parser                :   0.18 (14%) usr   0.03 (30%) sys   0.17 (12%) 
wall
...

  parser                :   3.54 (46%) usr   0.51 (42%) sys   4.35 (48%) 
wall
  parser                :   3.57 (51%) usr   0.45 (37%) sys   3.87 (46%) 
wall
  parser                :   3.57 (57%) usr   0.55 (48%) sys   3.70 (49%) 
wall
  parser                :   3.60 (33%) usr   0.51 (40%) sys   4.35 (35%) 
wall
  parser                :   3.62 (54%) usr   0.45 (37%) sys   4.28 (53%) 
wall
  parser                :   3.67 (54%) usr   0.47 (39%) sys   3.73 (45%) 
wall
  parser                :   3.69 (30%) usr   0.56 (43%) sys   4.34 (32%) 
wall
  parser                :   3.70 (32%) usr   0.44 (33%) sys   4.34 (33%) 
wall
  parser                :   3.73 (28%) usr   0.52 (40%) sys   4.41 (29%) 
wall
  ...

  parser                :  11.08 (37%) usr   1.06 (42%) sys  12.11 (36%) 
wall
  parser                :  11.19 (45%) usr   1.05 (44%) sys  12.40 (45%) 
wall
  parser                :  11.28 (44%) usr   1.01 (43%) sys  12.76 (44%) 
wall
  parser                :  17.78 (14%) usr   1.14 (28%) sys  20.27 (15%) 
wall
  parser                :  18.52 (14%) usr   1.37 (33%) sys  20.19 (14%) 
wall
  parser                :  20.95 (30%) usr   1.15 (36%) sys  22.77 (31%) 
wall
  parser                :  21.01 (22%) usr   1.06 (28%) sys  21.68 (21%) 
wall

Name lookup is another 5-20% of the time in his cases, for both small, 
medium, and large again

  name lookup           :   0.69 (13%) usr   0.42 (40%) sys   1.33 (20%) 
wall
  name lookup           :   0.80 (18%) usr   0.50 (54%) sys   1.16 (21%) 
wall
  name lookup           :   0.80 (19%) usr   0.39 (42%) sys   1.35 (25%) 
wall
  name lookup           :   0.81 (18%) usr   0.38 (43%) sys   1.27 (23%) 
wall
  name lookup           :   0.81 (20%) usr   0.41 (41%) sys   1.32 (25%) 
wall
...
  name lookup           :   2.68 (12%) usr   0.92 (39%) sys   3.45 (13%) 
wall
  name lookup           :   2.81 ( 9%) usr   0.99 (38%) sys   3.44 (10%) 
wall
  name lookup           :   4.98 ( 7%) usr   1.31 (45%) sys   6.54 ( 9%) 
wall
  name lookup           :   4.99 ( 7%) usr   1.25 (39%) sys   6.21 ( 8%) 
wall
  name lookup           :   5.23 ( 6%) usr   1.49 (39%) sys   6.86 ( 7%) 
wall
  name lookup           :   5.32 ( 4%) usr   1.24 (31%) sys   6.24 ( 5%) 
wall


Gimplification takes 3-7% on all of his cases.

  tree gimplify         :   1.60 ( 5%) usr   0.01 ( 0%) sys   1.74 ( 5%) 
wall
  tree gimplify         :   1.61 ( 5%) usr   0.04 ( 2%) sys   1.75 ( 5%) 
wall
  tree gimplify         :   1.65 ( 5%) usr   0.03 ( 1%) sys   1.70 ( 4%) 
wall
  tree gimplify         :   4.46 ( 5%) usr   0.04 ( 1%) sys   5.41 ( 5%) 
wall
  tree gimplify         :   4.68 ( 3%) usr   0.06 ( 1%) sys   5.08 ( 4%) 
wall
  tree gimplify         :   4.96 ( 7%) usr   0.06 ( 2%) sys   4.76 ( 6%) 
wall
  tree gimplify         :   5.14 ( 4%) usr   0.08 ( 2%) sys   4.81 ( 4%) 
wall

Most of the optimizations are 1% or less, if they are even measurable.

Note that the parser times are significantly slower with tree-ssa than 
they are for mainline (be it because of memory locality, bad time 
accounting, or whatever)
.
The largest parser times for 3.5 are
...
  parser                :   9.90 (41%) usr   0.96 (42%) sys  10.97 (41%) 
wall
  parser                :   9.93 (39%) usr   0.96 (42%) sys  10.99 (39%) 
wall
  parser                :  10.17 (47%) usr   0.91 (44%) sys  11.21 (46%) 
wall
  parser                :  13.60 (14%) usr   1.10 (34%) sys  15.08 (14%) 
wall
  parser                :  15.19 (22%) usr   1.06 (36%) sys  16.57 (22%) 
wall
  parser                :  15.57 (32%) usr   0.98 (37%) sys  16.20 (31%) 
wall

which is 6-7 seconds *less* than the largest parser times for tree-ssa

I only mention this because i'm pretty sure that right now, even if we 
made gimplification take no time on these testcases, we'd still have a 
large percent regression just from the parser times.

In fact, on these testcases, to avoid regression, you'd be better off 
concentrating speed on the parser and the name lookup, than you would 
on anything actually specific to tree-ssa (IE any optimization or 
gimplification).



More information about the Gcc mailing list