This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
inline-limit: some experimental feedback
- To: gcc at gcc dot gnu dot org
- Subject: inline-limit: some experimental feedback
- From: "Richard B. Kreckel" <kreckel at ginac dot de>
- Date: Tue, 21 Aug 2001 13:13:12 +0200 (CEST)
- Reply-To: Richard dot Kreckel at Uni-Mainz dot DE
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/>