[#407882] Ruby extremely slow compared to PHP — Mick Jagger <lists@...>

Hello there, how are you? Hope you are fine. I am a PHP programmer

17 messages 2013/06/02

[#407908] TCPServer/Socket and Marshal problem — Panagiotis Atmatzidis <atma@...>

Hello,

18 messages 2013/06/03

[#407946] Is rubyquiz.com dead? — Alphonse 23 <lists@...>

Thread title says everything.

18 messages 2013/06/04

[#408012] Need help understanding recursion. — pedro oliva <lists@...>

Ive been reading Chris Pine's book 'Learn to Program' and its been going

11 messages 2013/06/06

[#408129] Getting Started With Development — Chamila Wijayarathna <cdwijayarathna@...>

I'm new to Ruby Development. I downloaded source from Github, but couldn't

24 messages 2013/06/11
[#408131] Re: Getting Started With Development — Per-erik Martin <lists@...> 2013/06/11

Ruby is often installed on linux, or can be easily installed with the

[#408146] Re: Getting Started With Development — "Chamila W." <lists@...> 2013/06/11

Per-erik Martin wrote in post #1112021:

[#408149] Re: Getting Started With Development — "Carlo E. Prelz" <fluido@...> 2013/06/11

Subject: Re: Getting Started With Development

[#408198] NokoGiri XML Parser — "Devender P." <lists@...>

Hi,

11 messages 2013/06/13

[#408201] trying to load a .rb file in irb — "Eric D." <lists@...>

I am trying to load a ruby program into irb and it will not load.

12 messages 2013/06/13

[#408205] Can I use Sinatra to render dynamic pages? — Ruby Student <ruby.student@...>

Hell Team,

18 messages 2013/06/13
[#408219] Re: Can I use Sinatra to render dynamic pages? — Nicholas Van Weerdenburg <vanweerd@...> 2013/06/14

You should be able to do this without JavaScript by using streaming.

[#408228] Re: Can I use Sinatra to render dynamic pages? — Ruby Student <ruby.student@...> 2013/06/14

Well, I got some good suggestions from everyone here. I thank you all for

[#408275] Compare and sort one array according to another. — masta Blasta <lists@...>

I have two arrays of objects that look something like this:

14 messages 2013/06/17

[#408276] Comparing objects — "Thom T." <lists@...>

How do I compare two objects in Ruby, considering only attributes

15 messages 2013/06/17

[#408307] getting the most out of Ruby — robin wood <lists@...>

I write a lot of scripts in Ruby, most are small simple things but some

13 messages 2013/06/18

[#408309] Creating ruby script exe — Rochit Sen <lists@...>

Hi All,

17 messages 2013/06/18

[#408357] Beginners problem with database and datamapper — cristian cristian <lists@...>

Hi all!

28 messages 2013/06/20

[#408437] How do I input a variable floating point number into Ruby Programs — "Michael P F." <lists@...>

I want to evaluate the following interactively:

10 messages 2013/06/23

[#408518] #!/usr/bin/env: No such file or directory — Todd Sterben <lists@...>

I am new to both linux and ruby. I am using Ubuntu and Ruby 1.9

17 messages 2013/06/27

[#408528] Designing a Cabinet class — Mike Vezzani <lists@...>

Hello all,

12 messages 2013/06/27

[#408561] Find elment in array of hashes — Rodrigo Lueneberg <lists@...>

array = {:id=>1, :price =>0.25} # index[0]

23 messages 2013/06/28

Re: Timsort in Ruby

From: Roger Pack <lists@...>
Date: 2013-06-18 16:15:47 UTC
List: ruby-talk #408318
Matthew Kerwin wrote in post #1112422:
> Alphonse 23 wrote in post #1112359:
>> Ruby's quicksort function is 207 lines. Timsort is 1301 lines of C.
>> http://code.google.com/p/timsort/source/browse/trunk/timsort.c
>>
>> Shouldn't the Ruby community feel ashamed that Python has a more
>> optimized sorting function?
>
> Out of interested, I yanked that C source file from Python, modified
> some parameters to fit Ruby's comparison method signature, and built it
> into a current ruby-2.1-dev [1].
>
> I then benchmarked it against a bunch of arrays of integers[2], using a
> simple `for i in 1..n; array.dup.sort; end` loop.
>
> Note that I tried to MIN_MERGE values, reflecting both the Python and
> Java implementations.  These are typical results:
>
>                       ruby_qsort   timsort[32]  timsort[64]
> empty                  0.003296     0.003462     0.004511
> 10, in order           0.008184     0.019551     0.019676
> 10, reversed           0.010642     0.021260     0.022928
> 10, random             0.007978     0.024539     0.025238
> 100, in order          0.018367     0.031840     0.035474
> 100, reversed          0.018310     0.041987     0.040050
> 100, random            0.049978     0.141741     0.135564
> 1,000, in order        0.100423     0.098470     0.101137
> 1,000, reversed        0.100676     0.130736     0.132880
> 1,000, random          0.873151     1.997130     2.049663
> 10,000, in order       0.910810     0.810930     0.860948
> 10,000, reversed       0.913941     1.109160     1.182836
> 10,000, random        12.381776    24.416879    24.909807

(as a note, it would be interesting to benchmark both running time, 
which you have, and "number of compares requires" also).

I wonder if the timsort project itself has some benchmark test cases you 
could use.  I know it's supposed to work better with semi-sorted data, 
maybe try that.  Of course, with surprising results like these, it would 
be interesting to port ruby's sort into the python trunk/core and see if 
it makes Python faster there (and if so, to ask the Python and timsort 
people ...):)
-roger-

-- 
Posted via http://www.ruby-forum.com/.

In This Thread

Prev Next