Mark Mitchell, the GCC release manager posted at GCC’s mailing list that a GCC 3.1 pre-release test version will be ready any time now, today or tomorrow. GCC 3.1 is the first “stable” version that developers were awaiting to base their projects on, as in some cases it delivers up to 30% faster executables than GCC 2.9x.x for the same codebase. GCC 3.x is a bit slower in compilation times than GCC 2.9x.x, but it creates faster executables, so it worth the extra time it takes in order to utilize the extra optimizations (a tip: compiling GCC 3.1 itself with the Intel compiler (which creates about 35% faster code than gcc 3.x), it would optimize GCC and it will make it require less compilation time). GCC 3.1 also has an extra flag for specific Pentium4 optimizations while it is more C++ compliant (lays out stricter rules for the C++ devs). Macintosh users should also await this release, as the new GCC seems to offer about 5% faster code than the previous GCC for the G3/G4 architecture. Apple has already switched internally to GCC 3.1.
Faster in comparison to…
…previous versions of gcc
It sucks less
iNTEL makes spanking good compilers for their CPUs, especially for the P4 since it differs more from the other CPUs, and I would take it that it require greater care in producing code, and using all the special new instructions that was introduced with it.
But what about Athlon and (in the future) Hammers? I am sure Microsoft will make sure there is a compiler for the Hammers (64-bit Windows wants it), but then the others will lag behind.
Motorola/IBM makes compilers as well, and if I am not incorrect their compiler spanks on the Gx CPUs. Again proving that the people who makes the CPUs, makes the best compilers.
It seems in a previous discussion there was any chance to have it ported to Beos ? Is it still true ???
If i’m not mistaken, a gcc build will first build a xgcc which will then build the final gcc. So building gcc with a intel compiler will only optimize the xgcc. (correct me if i’m wrong)
At least at the Hint Double benchmark (a floating point
benchmark over an array of sizes) gcc-3.1 wins across the
board against icc.
See http://www.math.ucdavis.edu/~bill/hint.png
Does it fix object linking problem? Obj. prelinking hack had speed up C++ a lot. Maybe G++ could look into this and build something with better object linking that can work on all platforms.
If you had the intel compiler, why wouldn’t you just use that over GCC since it apparently makes faster code? also for those who don’t have an intel compiler why don’t the GCC people make a binary for download with the intel compiler? Guess there may be some pride type issue there.
I used the Hint Double benchmark (a scientific benchmark that graphs performance vs array size, ask google) to compare gcc-3.1 prerelease to icc, with the best optimization options I could manage. Gcc-3.1 prerelease won across the board.
Check out the graph at http://www.math.ucdavis.edu/~bill/hint.png
If you had the intel compiler, why wouldn’t you just use that over GCC since it apparently makes faster code?
1. ICC isn’t free
2. ICC still has compliance problems (eg. with templates) and has been known to generate incorrect code
3. ICC is obviously x86 only. GCC has been ported to practically every architecture on the planet which is tremendously useful if you’re writing crossplatform software (only have to worry about one compilers idiosyncracies not ten) or work in the embedded market
Does it fix object linking problem?
No, the relocation problems arise from ld.so, the runtime linker. Having said that the latest binutils adds support for combreloc which reduces the number of relocations required dramatically.
I think that there are a variety of answers to your questions :
-because, for some users, compile speed is important. If you have use Gentoo Linux, you’ll see that a full recompile of X+toolkits+window managers+desktop environment takes quite a while.
-because it may not be practical to make every application compilable under icc (I assume that icc doesn’t implement all the gcc-specific extensions).
-because icc isn’t free, so you can’t put it in a distro. gcc is something that you have to distribute as binary one way or another, and people won’t necessarily want to recompile it if they know that the binary they just got is pretty damn good.
The problem, as I see it, is that gcc itself (as Rocco said) is that compiling gcc isn’t a one-pass process. As far as I remember, building gcc is a 2-step process at least (build xgcc, build gcc with xgcc), often with a 3rd pass (build gcc with gcc because xgcc is non-optimizing). I do not know if that is because gcc uses gcc-specific extensions, or because gcc would not compile on other real-world compilers that are known to not properly follow the standard. Can someone experienced with gcc at the source-level enlighten us?
JBQ
> If you had the intel compiler, why wouldn’t you just use
> that over GCC since it apparently makes faster code?
AFAIK intel’s compiler uses some different commandline parameters so you would have to change your makefiles – this would in turn be a Bad Thing for people who work on platforms icc is not available for.
> Guess there may be some pride type issue there.
Guess there may be some cross platform type issues there.
I’d like to see how Codewarrior 7 compares to gcc3.1 on PPC. Gcc has never been a super-fast compiler, especially not on the PPC.
I used the Hint Double benchmark (a scientific benchmark that graphs performance vs array size, ask google) to compare gcc-3.1 prerelease to icc, with the best optimization options I could manage. Gcc-3.1 prerelease won across the board.
You comparing it to icc on AMD…why does am I not surprised?
I was wondering if anyone here had tried using the codeplay c compiler and how they felt it’s binaries compared to Intel’s C Compiler? I’ve been wanting to get a new C/C++ compiler for a while and since their C++ version is coming out soon, I was wondering what people’s real world experience has been. This may be my next software purchase. From all I have read, it’s better than Intel’s. However, now that Intel has the Alpha compiler team, who knows how much better Intel’s compiler will become.
While the link to Ars Technica’s website with these benchmarks says “5% faster code,” the actual document linked has a variety of benchmarks showing GCC 3.1 is generating code that’s from 6% to 31% faster, with the median being 16%. I’m not sure where the 5% came from.
At any rate, since it’s the compiler I’m stuck with, I’m happy enough for any speedup….
Anyone know how GCC for PPC MacOS X/Darwin compares in performance to Metroworks Codewarrior – I know Intel compilers are much better than GCC on Intel, is this the case for PPC compilers written by Motorola/Metroworks. I’m curious mainly from the point of view that you can get the Apple/GCC tools for free but MetroWorks costs $$$ – worth the extra expense?
Ok time to try if emerge -e world will rebuild everything or not =)
FYI, comparison of compilation times:
http://gcc.gnu.org/ml/gcc/2002-04/msg01168.html
Eugenia likes to add her unique flavour to News stories. You know, like Taco on Slashdot. “Gee, I’m clueless about this but I’m going to make a joke and stick my foot in it”
I’m aware that we’re not allowed to laugh at her English because it’s not her first language, so I won’t look too closely at the sentence structure
This one is particularly Taco-like because she takes two facts out of context and puts them together to make her own hilarious joke, funny only to other clueless people.
Firstly, we know that ICC produced 35% faster code for certain math kernels. So since all code from a given compiler runs at a certain speed obviously squiggle manipulation and string functions will be 35% faster too.
Secondly we know that GNU CC is portable. So obviously this means you can recompile with the ICC compiler and produce an ICC-accelerated GNU compiler.
Now put those incorrect facts together and you have gibberish. Next week, Eugenia will use spurious arguments to show how abysmal network performance in BeOS was actually a useful feature that many users miss when running Windows.
>obviously squiggle manipulation and string functions will be 35% faster too.
I said “about 35% faster”. Don’t change the meaning. Even if I had said “up to 35% faster”, you still wouldn’t be happy. People are never happy and nit picking everything.
> So obviously this means you can recompile with the ICC compiler and produce an ICC-accelerated GNU compiler.
Gcc should compile under ICC with no changes. GCC itself is one of the “spec” tests to test C/C++ compliance and speed. If ICC can’t compile it, then ICC is broken, not the other way around.
>arguments to show how abysmal network performance in BeOS was actually a useful feature that many users miss when running Windows.
Net_server sucked goats. I have never said in my life that net_server was good. In fact, I always tell BeOS users to not use BeOS as a server, it was never meant to be one.
Now, you troll, if you don’t like it here, you may as well not come back, ever. It is as simple as that.
> I’m aware that we’re not
> allowed to laugh at her
> English because it’s not
> her first language
Huh.., the average american sucks big-time when it comes to written english. Sure they speak it, but ask them to write it, and sparks will fly! Anyways, by any standards, and definitely by yankee standards, the editor’s grammar is much, much better than average. If you have problems understanding her writings, you must be american
Hey, thanks (linux) baby!
as stated before gcc isn’t a one stage build process
you can use icc just to create a xgcc and then xgcc will build the real gcc.
from what I read seems that gcc3.1 is at the same result as icc for C and that in the c++ the inliner has some problems.
so why bother about a non free one architecture compiler?
still I’m curious about VectorC, that is non free Ok, but works on many more architectures (even Ps2 VU* and EE) and seems optimizing very well
PS Stop picking up against Eugenia’s English, she is perfectly understandable
when i said why not use the intel complier people seam to mis-understood me. The artical says if you compile it with the intel compiler it would be faster. Well to do this you would have to have an intel compiler. So the issue of cost would be irrelevant since you allready have the intel compiler. If you don’t have the intel compiler than the fact that if you compile gcc with it doesn’t matter cause you can’t. The loop hole would be if you have a warezed version of the intel compiler and use that to compile gcc. If you were to do this then thats kinda sad that one might compile a free compiler with a none free one and have issues with none free ones yet you ripped one off to make your free one. Not saying that is excactly how one might act. Also I wasn’t talking about distrobutions. I was talking about people using it. if your going to distro stuff well yes you would use GCC but that was not the issue. MY other point still was why can’t people download a binary of the new GCC that was compiled by someone someplace with the intel compiler. Maybe you can though. Maybe this is a issue of people who like to compile their own stuff and think binaries are evil. If gcc is the only tool for the job well then yes you would use that, say for a wacky platform. But if your using windows or linux which the intel compiler exsist for. And to do the step of compiling GCC with the intel compiler you would allready own it, why would you use GCC, the intel compiler seams like a better compiler.
>Well to do this you would have to have an intel compiler.
>So the issue of cost would be irrelevant since you allready have the intel compiler
There is a free evaluation version of ICC. I was reffering to this very version.
Also, when someone wants to make a binary rpm of gcc and compiles it with a purchased ICC, the people who are going to receive his binary gcc, they will have a well optimized version.
So, there is no loophole. There are instances where the evaluation or purchased version of ICC can help a cause. No matter if this cause is only for your personal OR for customers.
Eugenia, thanks for clearing that up.
As far as the english thing goes. I see no problems. If people really want bad you should see me type and spell. Course if you look at many of my post you could tell. I don’t think many americans can spell for crap and i’m one who very much can’t spell for crap. Not our (current living population) fault we took a language got half way through removing the silent letters and stopped then started pulling in and bastardizing words from every other language and non-language in the world put them in a book claiming to be right and called it english. The US has no real language. If people want to really bash on grammar and such I will write a artical every now and then so everyone can vent on my grammer and then the editors will look like grammar gods.
1) ICC is generally nicer to work with. It compiles complex C++ code faster than gcc, and it gives *much* better error messages (certain STL error messages in g++ are nearly impossible to decipher!) thanks to its EDG front-end.
2) ICC can be a pain to use when you’re trying to do certain types of development. I’m using ICC with my OS kernel, and it’s a bitch to get all the details set up manually when you’re not linking to the supplied crt files. GCC is not only more well documented, but tends to do things the “standard UNIX way” as opposed to ICC, which behaves like the rather non-standard SCO UNIX compilers. GCC is also much more well documented, and you can’t beat open source.
3) The optimizer on ICC is *much* better. It will auto-vectorize your code, and allows you to use many “dumb” constructs and automatically turns them into fast, optimized functions using whatever instructions are fastest on the target processor. For example, I did memcpy() on ICC using just a for loop that copied integers one by one. It was much faster than the optimized, ASM version included in the Linux kernel.
what other people say… Eugenia rocks !
>I’d like to see how Codewarrior 7 compares to gcc3.1 on >PPC. Gcc has never been a super-fast compiler, especially >not on the PPC.
GCC always has done better at optimizing instructions than CW, but does worse in regard to C++ abstraction penalty and it does not have support for pre-compiled headers. Whether CW or GCC is better depends on your priorities and coding style.