Felix Windt wrote:
>> -----Original Message-----
>> From: M. Edward (Ed) Borasky [mailto:znmeb / cesmail.net] 
>> Sent: Sunday, September 23, 2007 5:32 PM
>> To: ruby-talk ML
>> Subject: Re: How fast does your Ruby run?
>>
>> Lloyd Linklater wrote:
>>> SpringFlowers AutumnMoon wrote:
>>>> The performance gain I got from Ruby 1.8.6 to Ruby 1.9 is 
>> only from 
>>>> about 52,000 iterations per second to 58,000... I wonder why other 
>>>> people get so big performance gain instead.  is it because 
>> they compile 
>>>> their only Ruby 1.9.
>>> If that is true, then is the release version specifically 
>> compiled to be 
>>> slow?  Which compiler is the best and which settings to use 
>> for a "roll 
>>> your own" ruby for windows?  Unix?
>>>
>> As far as I've been able to determine, with gcc, the compiler settings
>> should be "-O3 -march=<architecture>", where <architecture> 
>> is the chip
>> name, for example "-O3 -march=athlon64". There doesn't seem to be much
>> gain from going from O2 to O3, but it's non-zero. The tests 
>> I've looked
>> at indicate that it's the "-march" piece that does the real job.
>> Incidentally, I saw a post go by somewhere that had "-march= -mcpu=
>> -mtune=" flags all set. The only one you want is "-march" -- 
>> the others
>> are redundant or ignored or both.
>>
>> See http://www.jhaampe.org/software/ruby-gcc for the details.
>>
>> I can't help you with the Microsoft or other Windows compilers. Cygwin
>> or MSYS/MinGW compiling, on the other hand, should work the 
>> same way as
>> Linux -- you've got gcc, so use "-march=" and "-O3".
>>
> 
> 
> Just for the hell of it, on a Core 2 Duo @ 2GhZ:
> 
> 
> Vanilla Ubuntu Ruby from repositories
> $ ruby test.rb
> Ruby 1.8.5 on i486-linux
> It took 20.8315 seconds to run. 48004 iterations per second.
> 
> 
> Standard compiled from source (no compiler flags)
> $ ./ruby1.8.6/bin/ruby test.rb
> Ruby 1.8.6 on i686-linux
> It took 7.015534 seconds to run. 142540 iterations per second.
> 
> 
> Optimized compiled from source (CFLAGS="-O3 -march=nocona")
> $ ./ruby1.8.6opt/bin/ruby test.rb
> Ruby 1.8.6 on i686-linux
> It took 6.543835 seconds to run. 152815 iterations per second.
> 
> 
> Vanilla Ubuntu Ruby 1.9 from repositories
> $ ruby1.9 test.rb
> Ruby 1.9.0 on i486-linux
> It took 24.726563 seconds to run. 40442 iterations per second.
> 
> 
> Standard 1.9 compiled from source (no compiler flags)
> $ ./ruby1.9/bin/ruby test.rb
> Ruby 1.9.0 on i686-linux
> It took 2.627064 seconds to run. 380653 iterations per second.
> 
> 
> Optimized 1.9 compiled from source (CFLAGS="-O3 -march=nocona")
> felix@felix-laptop:~$ ./ruby1.9opt/bin/ruby test.rb
> Ruby 1.9.0 on i686-linux
> It took 2.593149 seconds to run. 385631 iterations per second.
> 
> 
> Felix

Yep ... those numbers are typical of what I'm seeing with the Athlon64
X2 -- I haven't run this particular test yet, but I will run it later
tonight (compiled only -- I run Gentoo so I don't have a pre-compiled
i486 executable to deal with). :)

By the way, what compiler version are you on? I'm on 4.2.0 at the moment
-- nothing newer has escaped Gentoo's QA process yet.