On Sep 20, 2007, at 15:44, SpringFlowers AutumnMoon wrote:
> Eric Hodel wrote:
>> What program?
> How about something just like:
>
> on my Mac, the 1.8.2 runs about 46% faster than 1.8.6
>
> [...]
>
> print "Ruby ", RUBY_VERSION, " patch ", RUBY_PATCHLEVEL, " on ",  
> RUBY_PLATFORM

This program doesn't run on ruby 1.8.2, there is no RUBY_PATCHLEVEL.

$ /usr/bin/ruby -ve 'RUBY_PATCHLEVEL'
ruby 1.8.2 (2004-12-25) [universal-darwin8.0]
-e:1: warning: useless use of a constant in void context
-e:1: uninitialized constant RUBY_PATCHLEVEL (NameError)

I used this one, which seems to be the core of it:

for i in 1..1_000_000
   t = (1..10).inject {|x, y| x + y }
end

And I got opposite results:

$ pbpaste | time ruby -v -
ruby 1.8.6 (2007-06-30 patchlevel 5000) [i686-darwin8.10.1]
        12.37 real        12.29 user         0.01 sys
$ pbpaste | time /usr/bin/ruby -v -
ruby 1.8.2 (2004-12-25) [universal-darwin8.0]
        16.23 real        16.13 user         0.02 sys

1.8.6 is 24% faster in this test.

and for what its worth:

$ pbpaste | time ruby19 -v -
ruby 1.9.0 (2007-09-15 patchlevel 0) [i686-darwin8.10.1]
syck.so: warning: method redefined; discarding old value
         3.57 real         3.50 user         0.01 sys

--
Poor workers blame their tools. Good workers build better tools. The
best workers get their tools to do the work for them. -- Syndicate Wars