[Bug c++/70452] [5/6 Regression] Regression in C++ parsing performance between 4.9.3 and 5.3.1

ppalka at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Thu Apr 7 17:29:00 GMT 2016


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70452

--- Comment #14 from Patrick Palka <ppalka at gcc dot gnu.org> ---
trunk is now at

Execution times (seconds)
 phase setup             :   0.00 ( 0%) usr   0.00 ( 0%) sys   0.01 ( 1%) wall 
  1287 kB ( 1%) ggc
 phase parsing           :   1.28 (100%) usr   0.20 (100%) sys   1.48 (99%)
wall  156462 kB (99%) ggc
 |name lookup            :   0.03 ( 2%) usr   0.01 ( 5%) sys   0.04 ( 3%) wall 
    81 kB ( 0%) ggc
 |overload resolution    :   0.04 ( 3%) usr   0.00 ( 0%) sys   0.05 ( 3%) wall 
   628 kB ( 0%) ggc
 preprocessing           :   0.03 ( 2%) usr   0.04 (20%) sys   0.09 ( 6%) wall 
  2048 kB ( 1%) ggc
 parser (global)         :   0.02 ( 2%) usr   0.07 (35%) sys   0.06 ( 4%) wall 
  7735 kB ( 5%) ggc
 parser function body    :   1.23 (96%) usr   0.09 (45%) sys   1.33 (89%) wall 
146667 kB (93%) ggc
 TOTAL                 :   1.28             0.20             1.49            
157759 kB


The remaining extra memory and runtime overhead relative to 4.9 is mostly due
to the constexpr_call_table which caches the result of each constexpr call
that's been evaluated.  This table now gets cleared during GC though which in
real programs triggers frequently enough that its size won't be a problem.


More information about the Gcc-bugs mailing list