Bug 52147 - Preprocessed Chromium source with long compile time
Summary: Preprocessed Chromium source with long compile time
Status: NEW
Alias: None
Product: gcc
Classification: Unclassified
Component: c++ (show other bugs)
Version: unknown
: P3 normal
Target Milestone: ---
Assignee: Not yet assigned to anyone
URL:
Keywords: compile-time-hog
Depends on:
Blocks:
 
Reported: 2012-02-07 10:11 UTC by hans
Modified: 2024-04-09 08:22 UTC (History)
5 users (show)

See Also:
Host:
Target:
Build:
Known to work:
Known to fail:
Last reconfirmed: 2012-02-07 00:00:00


Attachments
the slowest file (414.86 KB, application/x-gzip)
2012-02-07 10:12 UTC, hans
Details
file with largest difference between 4.6 and 4.7 (685.06 KB, application/x-gzip)
2012-02-07 10:17 UTC, hans
Details

Note You need to log in before you can comment on or make changes to this bug.
Description hans 2012-02-07 10:11:34 UTC
As requested in http://gcc.gnu.org/ml/gcc/2012-02/msg00146.html, here is the preprocessed source for the file that was slowest to compile in my measurements.
Comment 1 hans 2012-02-07 10:12:13 UTC
Created attachment 26599 [details]
the slowest file
Comment 2 hans 2012-02-07 10:17:39 UTC
Created attachment 26600 [details]
file with largest difference between 4.6 and 4.7
Comment 3 Richard Biener 2012-02-07 10:34:32 UTC
Thanks.

The slowest one looks autogenerated, simply a very large translation unit.
Lots of functions with lots of function calls. Nothing special sticks out when looking at -ftime-report.

The one with the largest difference spends the most time in the C++ frontend
where it also regressed.
Comment 4 Markus Trippelsdorf 2012-02-07 10:51:09 UTC
perf record -g g++ -O2 -c /var/tmp/V8DerivedSources08.ii
with 4.7 shows:

# Overhead  Command  
     8.78%  cc1plus  cc1plus                     [.] store_binding
            |
            --- store_binding

     1.94%  cc1plus  libc-2.15.so                [.] memset
            |
            --- memset
               |          
               |--50.00%-- reload_cse_regs_1
               |          
               |--25.00%-- ipcp_generate_summary
               |          
                --24.99%-- inline_analyze_function

     1.89%  cc1plus  cc1plus                     [.] gt_ggc_mx_lang_tree_node
            |
            --- gt_ggc_mx_lang_tree_node

     1.86%  cc1plus  libc-2.15.so                [.] _int_malloc
            |
            --- _int_malloc

     1.73%  cc1plus  cc1plus                     [.] ggc_set_mark
            |
            --- ggc_set_mark

     1.36%  cc1plus  cc1plus                     [.] ggc_internal_alloc_stat
            |
            --- ggc_internal_alloc_stat

     1.27%  cc1plus  cc1plus                     [.] htab_find_slot_with_hash
            |
            --- htab_find_slot_with_hash
               |          
                --100.00%-- (nil)

     1.24%  cc1plus  libc-2.15.so                [.] _int_free
            |
            --- _int_free
               |          
                --100.00%-- compute_may_aliases

     1.07%  cc1plus  cc1plus                     [.] push_to_top_level
            |
            --- push_to_top_level

     0.94%  cc1plus  cc1plus                     [.] bitmap_set_bit
            |
            --- bitmap_set_bit
               |          
               |--22.22%-- 0x31cfaa8
               |          
               |--22.22%-- (nil)
               |          
               |--11.11%-- 0x2b260c8
               |          
               |--11.11%-- 0x2b26308
               |          
               |--11.11%-- 0x31d02b0
               |          
               |--11.11%-- 0x2af1290
               |          
                --11.11%-- 0x32067c8

     0.87%  cc1plus  cc1plus                     [.] lookup_fnfields_idx_nolazy
            |
            --- lookup_fnfields_idx_nolazy

     0.78%  cc1plus  cc1plus                     [.] add_function_candidate
            |
            --- add_function_candidate

     0.77%       as  as                          [.] 0x2f5e5
...
Comment 5 Richard Biener 2012-02-07 12:29:24 UTC
largest regression:

trunk -O2:
 TOTAL                 :  29.47             3.06            32.61           678947 kB

4.6.3-pre -O2:
 TOTAL                 :  23.56             3.80            27.90             658720 kB

4.6.3-pre -fsyntax-only:
Execution times (seconds)
 garbage collection    :   0.44 ( 4%) usr   0.00 ( 0%) sys   0.43 ( 3%) wall       0 kB ( 0%) ggc
 preprocessing         :   0.27 ( 2%) usr   0.34 (14%) sys   0.52 ( 4%) wall    4548 kB ( 1%) ggc
 parser                :   7.70 (67%) usr   0.86 (36%) sys   9.02 (65%) wall  364457 kB (84%) ggc
 name lookup           :   3.00 (26%) usr   1.15 (48%) sys   3.87 (28%) wall   62867 kB (15%) ggc
 varconst              :   0.02 ( 0%) usr   0.02 ( 1%) sys   0.02 ( 0%) wall       4 kB ( 0%) ggc
 symout                :   0.01 ( 0%) usr   0.01 ( 0%) sys   0.01 ( 0%) wall      32 kB ( 0%) ggc
 TOTAL                 :  11.44             2.40            13.88             433195 kB

trunk -fsyntax-only:
Execution times (seconds)
 phase setup             :   0.01 ( 0%) usr   0.01 ( 1%) sys   0.01 ( 0%) wall    1438 kB ( 0%) ggc
 phase parsing           :  14.00 (100%) usr   1.86 (99%) sys  15.93 (100%) wall  405002 kB (100%) ggc
 |name lookup            :   6.07 (43%) usr   0.31 (16%) sys   5.88 (37%) wall   30410 kB ( 7%) ggc
 |overload resolution    :   6.55 (47%) usr   0.25 (13%) sys   7.07 (44%) wall   64054 kB (16%) ggc
 garbage collection      :   0.46 ( 3%) usr   0.01 ( 1%) sys   0.46 ( 3%) wall       0 kB ( 0%) ggc
 preprocessing           :   0.27 ( 2%) usr   0.30 (16%) sys   0.68 ( 4%) wall    4876 kB ( 1%) ggc
 parser (global)         :   1.07 ( 8%) usr   0.42 (22%) sys   1.26 ( 8%) wall   88673 kB (22%) ggc
 parser struct body      :   1.79 (13%) usr   0.21 (11%) sys   2.36 (15%) wall   67530 kB (17%) ggc
 parser enumerator list  :   0.02 ( 0%) usr   0.00 ( 0%) sys   0.02 ( 0%) wall    1220 kB ( 0%) ggc
 parser function body    :   1.11 ( 8%) usr   0.09 ( 5%) sys   1.26 ( 8%) wall   21293 kB ( 5%) ggc
 parser inl. func. body  :   1.42 (10%) usr   0.09 ( 5%) sys   1.59 (10%) wall  
 18676 kB ( 5%) ggc
 parser inl. meth. body  :   1.65 (12%) usr   0.23 (12%) sys   1.85 (12%) wall   53613 kB (13%) ggc
 template instantiation  :   6.19 (44%) usr   0.50 (27%) sys   6.45 (40%) wall  149113 kB (37%) ggc
 varconst                :   0.02 ( 0%) usr   0.01 ( 1%) sys   0.00 ( 0%) wall       4 kB ( 0%) ggc
 TOTAL                 :  14.01             1.88            15.95             406458 kB