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

Current results


Assume performance stays constant (it pretty much does).

Using two tweakable heuristics (code growth by a factor of x, and all functions smaller
than the cost to call them), we get the following compile times, just
for the record.

Before any work (old "10k" limit):

31.28 seconds

Code growth factor of 300 (for statistics sake):
49.31 seconds [1]

Code growth factor of 50 (should be ~the same as the old)
29.28 seconds

Code growth factor of 3 (current default because it didn't seem to
increase compile time by a noticeable amount, I personally think it's
too high, but i wanted to do real benchmarks in the morning to see):
8.28 seconds

Code growth factor of 2:
7.69 seconds

Code growth factor of 0/1 (equivalent, (0/1) * orig size is never >
added_inline_stmts_so_far + original_size)
7.07 seconds

And we are back to the parser getting the blame for being the slowest
part again. :)


Memory usage is down by 11 meg peak / 9 meg average too.
(20 vs 31, usually fluctuating between 18.5 and 20 and 28 and 31)




[1] Great way to test out bottlenecks in optimization passes, since
you end up with lots of bb's and insns that you can optimize away in
different fashions. We do 1700 copy props, 300 pre hoists/expression removals. 



For some actual breakdowns of timing:

This is code growth 300:

 garbage collection    :   2.25 ( 5%) usr   0.01 ( 0%) sys   2.43 ( 4%) wall
 preprocessing         :   0.16 ( 0%) usr   0.03 ( 1%) sys   0.19 ( 0%) wall
 lexical analysis      :   0.30 ( 1%) usr   0.07 ( 3%) sys   0.37 ( 1%) wall
 parser                :   2.00 ( 4%) usr   1.23 (46%) sys   3.48 ( 6%) wall
 expand                :  10.10 (20%) usr   0.18 ( 7%) sys  10.89 (20%) wall
 varconst              :   0.02 ( 0%) usr   0.00 ( 0%) sys   0.02 ( 0%) wall
 integration           :   0.47 ( 1%) usr   0.04 ( 1%) sys   0.51 ( 1%) wall
 jump                  :   4.50 ( 9%) usr   0.18 ( 7%) sys   4.99 ( 9%) wall
 CSE                   :   3.51 ( 7%) usr   0.02 ( 1%) sys   3.76 ( 7%) wall
 global CSE            :   6.04 (12%) usr   0.18 ( 7%) sys   6.55 (12%) wall
 loop analysis         :   0.65 ( 1%) usr   0.08 ( 3%) sys   0.78 ( 1%) wall
 CSE 2                 :   1.29 ( 3%) usr   0.01 ( 0%) sys   1.35 ( 2%) wall
 flow analysis         :   0.96 ( 2%) usr   0.00 ( 0%) sys   1.01 ( 2%) wall
 combiner              :   0.49 ( 1%) usr   0.00 ( 0%) sys   0.49 ( 1%) wall
 if-conversion         :   0.18 ( 0%) usr   0.01 ( 0%) sys   0.19 ( 0%) wall
 regmove               :   0.16 ( 0%) usr   0.01 ( 0%) sys   0.17 ( 0%) wall
 scheduling            :  10.39 (21%) usr   0.59 (22%) sys  11.61 (21%) wall
 local alloc           :   0.99 ( 2%) usr   0.00 ( 0%) sys   1.05 ( 2%) wall
 global alloc          :   0.92 ( 2%) usr   0.03 ( 1%) sys   0.95 ( 2%) wall
 reload CSE regs       :   0.98 ( 2%) usr   0.01 ( 0%) sys   1.04 ( 2%) wall
 flow 2                :   0.62 ( 1%) usr   0.00 ( 0%) sys   0.74 ( 1%) wall
 if-conversion 2       :   0.04 ( 0%) usr   0.00 ( 0%) sys   0.04 ( 0%) wall
 rename registers      :   0.36 ( 1%) usr   0.00 ( 0%) sys   0.42 ( 1%) wall
 scheduling 2          :   1.09 ( 2%) usr   0.00 ( 0%) sys   1.15 ( 2%) wall
 reorder blocks        :   0.13 ( 0%) usr   0.00 ( 0%) sys   0.13 ( 0%) wall
 shorten branches      :   0.09 ( 0%) usr   0.00 ( 0%) sys   0.09 ( 0%) wall
 final                 :   0.15 ( 0%) usr   0.01 ( 0%) sys   0.16 ( 0%) wall
 symout                :   0.01 ( 0%) usr   0.00 ( 0%) sys   0.01 ( 0%) wall
 rest of compilation   :   0.42 ( 1%) usr   0.01 ( 0%) sys   0.43 ( 1%) wall
 TOTAL                 :  49.31             2.70            55.04

And this is code growth 2:

Execution times (seconds)
 garbage collection    :   1.32 (17%) usr   0.02 ( 5%) sys   1.40 (16%) wall
 preprocessing         :   0.18 ( 2%) usr   0.06 (15%) sys   0.30 ( 3%) wall
 lexical analysis      :   0.28 ( 4%) usr   0.05 (13%) sys   0.34 ( 4%) wall
 parser                :   2.05 (26%) usr   0.19 (49%) sys   2.38 (27%) wall
 expand                :   0.27 ( 3%) usr   0.01 ( 3%) sys   0.28 ( 3%) wall
 varconst              :   0.06 ( 1%) usr   0.01 ( 3%) sys   0.06 ( 1%) wall
 integration           :   0.06 ( 1%) usr   0.00 ( 0%) sys   0.06 ( 1%) wall
 jump                  :   0.19 ( 2%) usr   0.00 ( 0%) sys   0.25 ( 3%) wall
 CSE                   :   0.52 ( 7%) usr   0.00 ( 0%) sys   0.52 ( 6%) wall
 global CSE            :   0.17 ( 2%) usr   0.02 ( 5%) sys   0.19 ( 2%) wall
 loop analysis         :   0.05 ( 1%) usr   0.00 ( 0%) sys   0.05 ( 1%) wall
 CSE 2                 :   0.20 ( 3%) usr   0.00 ( 0%) sys   0.20 ( 2%) wall
 flow analysis         :   0.25 ( 3%) usr   0.00 ( 0%) sys   0.25 ( 3%) wall
 combiner              :   0.07 ( 1%) usr   0.00 ( 0%) sys   0.07 ( 1%) wall
 if-conversion         :   0.03 ( 0%) usr   0.00 ( 0%) sys   0.03 ( 0%) wall
 regmove               :   0.07 ( 1%) usr   0.00 ( 0%) sys   0.08 ( 1%) wall
 scheduling            :   0.26 ( 3%) usr   0.00 ( 0%) sys   0.31 ( 4%) wall
 local alloc           :   0.45 ( 6%) usr   0.00 ( 0%) sys   0.50 ( 6%) wall
 global alloc          :   0.28 ( 4%) usr   0.00 ( 0%) sys   0.33 ( 4%) wall
 reload CSE regs       :   0.33 ( 4%) usr   0.00 ( 0%) sys   0.33 ( 4%) wall
 flow 2                :   0.15 ( 2%) usr   0.01 ( 3%) sys   0.16 ( 2%) wall
 if-conversion 2       :   0.01 ( 0%) usr   0.00 ( 0%) sys   0.01 ( 0%) wall
 rename registers      :   0.14 ( 2%) usr   0.00 ( 0%) sys   0.14 ( 2%) wall
 scheduling 2          :   0.24 ( 3%) usr   0.00 ( 0%) sys   0.24 ( 3%) wall
 reorder blocks        :   0.03 ( 0%) usr   0.00 ( 0%) sys   0.03 ( 0%) wall
 shorten branches      :   0.04 ( 1%) usr   0.00 ( 0%) sys   0.04 ( 0%) wall
 final                 :   0.05 ( 1%) usr   0.00 ( 0%) sys   0.05 ( 1%) wall
 symout                :   0.00 ( 0%) usr   0.00 ( 0%) sys   0.00 ( 0%) wall
 rest of compilation   :   0.08 ( 1%) usr   0.00 ( 0%) sys   0.08 ( 1%) wall
 TOTAL                 :   7.85             0.39             8.76


Notice we are back to being garbage collection and parsing time
dependent, as we used to be.


Patch coming tomoorrow morning, it's 3 am.

--Dan

-- 
"I used to be a bartender at the Betty Ford Clinic.
"-Steven Wright


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