Chad Perrin wrote:
> On Mon, Sep 24, 2007 at 02:21:34PM +0900, M. Edward (Ed) Borasky wrote:
>> Felix Windt wrote:
>>> I'm curious whether 4.2 would give further performance enhancements - maybe
>>> if I have some time this week I'll build a tool chain to test with.
>> It's unlikely to be faster in a statistically significant sense. As a
>> matter of fact, in many cases the *older* gcc versions give faster code!
>> Poke around on Anton Ertl's Forth/VMgen site and you'll find that *his*
>> performance hit a peak with gcc 2.95 and has been dropping steadily with
>> each new gcc since then. :)
> 
> I find that rather surprising.  The common wisdom seems to be that newer
> compiler versions tend to optimize more aggressively for the common case,
> and take longer to compile as a result -- but tend to cause problems for
> performance with multithreaded applications because until very recently
> that hasn't been a priority for most compilers.  Falling performance for
> the same code on newer compiler versions makes me wonder what else is
> going on in compiler development.  If you have any insights, I'd like to
> know about it.

The phenomenon is specific to gForth/vmgen and not a general rule as far
as I know. The "general rule" is that newer compilers do better on newer
architectures and "about the same" in the sense of statistical
significance on the older ones.

gForth/vmgen has some very specific dependencies on gcc itself -- it
uses some non-standard extensions to the C language in gcc and
aggressively goes for putting things in registers, something most
programmers wouldn't risk doing.

Another example is the ATLAS linear algebra library. Again, this is
highly tuned C code (and now even has some assembler kernels). GCC 3 was
significantly better than early versions of GCC 4 on 32-bit
architectures. I don't recall if GCC 4 is now equivalent, and the point
may be moot if the assembler kernels were introduced as a result.

> I wonder if Ruby 1.9 would compile with the TenDRA compiler. . . .

I've never heard of it. If I had an Intel Core2 chip, I'd evaluate the
Intel compiler on it, but I don't ... I'm an Intel-free zone. :)