This is the mail archive of the
mailing list for the GCC project.
Re: Benchmarks gcc 3.0.4 (soon 3.1) vs. Intel C++ 6.0
- From: kelley dot r dot cook at gm dot com
- To: "Scott Robert Ladd" <scott at coyotegulch dot com>
- Cc: gcc at gnu dot org
- Date: Thu, 9 May 2002 12:49:41 -0400
- Subject: Re: Benchmarks gcc 3.0.4 (soon 3.1) vs. Intel C++ 6.0
>I've posted a set of benchmarks comparing the performance of code
>by gcc 3.0.4 against that generated by Intel C++ 6.0 for Linux:
>From your web site:
>I've updated the benchmark tables, showing the performance gain by using
>these options: -O3 -funroll-all-loops -fomit-frame-pointer -ffast-math
>-march=i686. I also tried several other options suggested by various
>and mailing list correspondents, including -malign-double,
>-fprefetch-loop-arrays, and -fstrict-aliasing; none of those improved
>performance on the benchmark code.
-malign-double used to matter in the old egcs, but it breaks ABI and isn't
really all that useful anymore anyway. Jeff Law once called it evil:
-fstrict-aliasing *does* matter, but since it is enabled by default since
the 3.0 release, it obviously wouldn't change your benchmark times.
-fprefetch-loop-arrays also matters on code that can take advantage of it.
However, it is a new 3.1 option and only will come into play on
architectures that support prefetch, in the x86 world, this requires chips
with SSE or 3DNow support. Once you get the 3.1 try it along with
-march=pentium3 (since that is actually what you have).
For grins also add in a -fpmath=sse which is also a new for 3.1 command.
Their is no auto-vectorization support yet, but even scalar FP code
much (10-25%) better than the x87 default.