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]

inline-limit: some experimental feedback


Hi,

Okay, I just learned that Gerald has set the default
PARAM_MAX_INLINE_INSNS from 10000 down to 600 in order to remedy
compile-time performance regressions.  This turned out to cause a
considerable slowdown in our code.  We do some fairly heavy symbolic
computation in C++ and the GiNaC library <http://www.ginac.de/> we use has
a bunch of timings in its suite of regression tests.  I ran it through
GCC-3.0.1 with several settings of -finline-limit and based on the results
listed below I would appreciate it if the default could be increased for
future releases -- maybe to something between 3000 and 5000.  10000 seems
to be quite much but 600 is definitely not high enough.  All times are in
seconds.  I hope these numbers help you finding a good default for
everybody.

Sorry I didn't react earlier when the thread "C++ compile-time
regressions" popped up first.

Regards
     -richy.

commutative expansion and substitution (a.k.a. Denny Fliegner's test)
     size   600      1000     2000     4000     10000     Ratio wrt. 4000
      100   0.44     0.40     0.38     0.37     0.35      1.19/1.08/1.03/1.00/0.95
      200   2.01     1.82     1.76     1.70     1.66      1.18/1.07/1.04/1.00/0.97
Laurent series expansion of Gamma function
    order   600      1000     2000     4000     10000     Ratio wrt. 4000
       20   1.54     1.43     1.35     1.31     1.29      1.18/1.09/1.03/1.00/0.98
       25   6.179    5.65     5.45     5.28     5.26      1.17/1.07/1.03/1.00/1.00
determinant of univariate symbolic Vandermonde matrices
      dim   600      1000     2000     4000     10000     Ratio wrt. 4000
     8x 8   0.14     0.12     0.11     0.10     0.11      1.40/1.20/1.10/1.00/1.10
    10x10   1.35     1.20     1.13     1.09     1.08      1.24/1.10/1.04/1.00/0.99
determinant of polyvariate symbolic Toeplitz matrices
      dim   600      1000     2000     4000     10000     Ratio wrt. 4000
     7x 7   0.359    0.32     0.30     0.29     0.29      1.24/1.10/1.03/1.00/1.00
     8x 8   1.52     1.38     1.31     1.27     1.25      1.20/1.09/1.03/1.00/0.98
Lewis-Wester test D (normalized sum of rational fcns)
            600      1000     2000     4000     10000     Ratio wrt. 4000
            0.40     0.37     0.35     0.34     0.36      1.18/1.09/0.03/1.00/1.06
Lewis-Wester test E (normalized sum of rational fcns)
            600      1000     2000     4000     10000     Ratio wrt. 4000
            0.33     0.30     0.29     0.26     0.27      1.27/1.15/1.12/1.00/1.04
Lewis-Wester test F (gcd of 2-var polys)
            600      1000     2000     4000     10000     Ratio wrt. 4000
            0.036    0.036    0.036    0.032    0.032     1.13/1.13/1.13/1.00/1.00
Lewis-Wester test G (gcd of 3-var polys)
            600      1000     2000     4000     10000     Ratio wrt. 4000
            1.27     1.17     1.12     1.10     1.10      1.15/1.06/1.02/1.00/1.00
Lewis-Wester test H (det of 80x80 Hilbert)
            600      1000     2000     4000     10000     Ratio wrt. 4000
            5.42     5.20     5.08     5.04     5.07      1.08/1.03/1.01/1.00/1.01
Lewis-Wester test I (invert rank 40 Hilbert)
            600      1000     2000     4000     10000     Ratio wrt. 4000
            1.61     1.54     1.46     1.46     1.47      1.10/1.06/1.00/1.00/1.01
Lewis-Wester test J (check rank 40 Hilbert)
            600      1000     2000     4000     10000     Ratio wrt. 4000
            0.88     0.86     0.82     0.82     0.83      1.07/1.05/1.00/1.00/1.01
Lewis-Wester test K (invert rank 70 Hilbert)
            600      1000     2000     4000     10000     Ratio wrt. 4000
            10.41    10.05    9.74     9.66     9.76      1.08/1.04/1.01/1.00/1.01
Lewis-Wester test L (check rank 70 Hilbert)
            600      1000     2000     4000     10000     Ratio wrt. 4000
            5.08     4.92     4.67     4.69     4.80      1.08/1.05/1.00/1.00/1.02
Lewis-Wester test M1 (26x26 sparse, det)
            600      1000     2000     4000     10000     Ratio wrt. 4000
            0.21     0.20     0.19     0.18     0.19      1.17/1.11/1.06/1.00/1.06
Lewis-Wester test P (det of sparse rank 101)
            600      1000     2000     4000     10000     Ratio wrt. 4000
            0.75     0.70     0.66     0.60     0.64      1.25/1.17/1.10/1.00/1.07
Lewis-Wester test P' (det of less sparse rank 101)
            600      1000     2000     4000     10000     Ratio wrt. 4000
            3.29     3.18     3.06     3.05     3.07      1.08/1.04/1.00/1.00/1.01
computation of an antipode in Yukawa theory
            600      1000     2000     4000     10000     Ratio wrt. 4000
            42.82    36.62    34.43    34.17    32.99     1.25/1.07/1.01/1.00/0.97

PS:  Since distributions compile most of their packages with plain -O2 and
     disk space matters there, I also record the size of stripped static
     executable in bytes:
            600      1000     2000     4000     10000
            3069608  3080584  3211304  3105544  3099080
     I find it strange that it's decreasing again after 
     inline-limit=2000.  Is this to be expected?

PPS: Oh, and by the way, I have also run those timings through
     three different commercially available compilers on Linux/x86.
     And I can tell you that GCC-3.0 is defying all competition with
     respect to usability, code-size and speed.  Impressive work!
-- 
Richard B. Kreckel
<Richard.Kreckel@Uni-Mainz.DE>
<http://wwwthep.physik.uni-mainz.de/~kreckel/>



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