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]
Other format: [Raw text]

Re: C compile time


Hello,

I've now updated results at
http://www.myownlittleworld.com/computers/gcctable.html
to include a table of the percentage change for
compile time between the various compilers.

Some things which stick out:

1) Andrew Pinski's patch gets us back on average about
10% on mainline and 7.5% on branch. Hopefully his
copyright assignment arrives soon!

2) Kaveh's work the garbage collection algorithm means
that gcc 3.3 is the first major gcc release since egcs
1.0.3a that's not more than 5% slower than the last
major release on the preceding branch. gcc 3.2.3 for
instance is between 14% and 42% slower than gcc 3.0.4
depending on optimizations.

3) The biggest slowdown to gcc was between gcc 3.0.X
and 3.1.X (ie different branches), but between 3.1.1
and 3.2.3, there was quite a slowdown too, ~6-9%. I
didn't realize that such big changes occurred on
release branches.

4) -funit-at-a-time is expensive!

Some (possibly impractical) suggestions:

1) At this point, the SPEC testers are keeping track
of runtime. We already have compile regression testers
for the testsuite which automatically report
regressions to the list. Should the same be done for
compile-time, ie a compile time increase of more than
1% prompts a message to the list.

1b) This may not be practical because of noise between
runs. Possibly do multiple runs, and take their mean,
or some such to reduce noise? Maybe not practical with
SPEC2K, but with SPEC95?

2) Establish a clear criteria for new optimizations,
and where they fit. For instance, -O1 according to the
manual means avoiding time consuming optimizations.
Yet as of 3.3, it's 55% slower than in 2.95.3 and 35%
slower than in 3.0.4. Perhaps state that certain
optimization levels aren't allowed to slow more than a
certain number of % between release for a certain
important benchmarks (ie SPEC2K, linux-kernel, etc.)

2b) Set criteria for new optimizations to be added.
Mandate a certain amount of runtime improvement in a
certain benchmark, before an optimization is included
with -O2 for example.

Cheers,

Dara

__________________________________
Do you Yahoo!?
SBC Yahoo! DSL - Now only $29.95 per month!
http://sbc.yahoo.com


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