[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Ruby performance question

Jaypee

3/28/2005 12:37:00 PM

Hello,

I am not a performance freak at all but I've noticed that despite a huge
difference between a single CPU 1GHz G4 and a dual 2 GHz G5, both
running ruby 1.8.2 with 1GB of RAM on Mac OS X 10.3.8, there was only a
33% difference in the calculation of a factorial:
I used the following code:
#!/usr/local/bin/ruby
class Integer
def factorial
(1..self).inject(1) { |f, n| f * n }
end
end

puts 100000.factorial

It takes about 9 minutes on the lower profile machine and 6 min or so on
the bigger one.

Generally, the generation of processor (G4 vs. G5) alone is responsible
of a similar difference at equal clock frequencies. But here, I expected
a bigger difference given the combined effect of a higher clock, a
higher generation and a dual CPU.

BTW, I was not able to make a comparable test on my 2.6 GHz 1GB Windows
XP SP2 workstation which failed at 9273.factorial. I don' t remember the
message but it's easy to reproduce.

Is this kind of performance "normal" given the algorithm used or is
there a balance between the coding style and the performances that could
be wise to consider?

I have no performance objective, I am just curious.

Thank you for your advices,
Jean-Pierre
6 Answers

Tim Hunter

3/28/2005 1:28:00 PM

0

Jaypee wrote:

> Generally, the generation of processor (G4 vs. G5) alone is responsible
> of a similar difference at equal clock frequencies. But here, I expected
> a bigger difference given the combined effect of a higher clock, a
> higher generation and a dual CPU.
>

I don't think Ruby takes advantage of the 2nd CPU. The script runs on
only 1 CPU, so all the benefit you're seeing is from the faster clock speed.

James Gray

3/28/2005 2:16:00 PM

0

On Mar 28, 2005, at 6:39 AM, Jaypee wrote:

> Generally, the generation of processor (G4 vs. G5) alone is
> responsible of a similar difference at equal clock frequencies. But
> here, I expected a bigger difference given the combined effect of a
> higher clock, a higher generation and a dual CPU.

A second processor is only going to be of benefit when multiple
threads/processes are running at the same time. That's not the case
here. If fact, since Ruby's threads are currently "in process", Ruby
will always run on a single processor. Of course, if your computer is
doing some other work while running your Ruby script, it should get
scheduled on the other processor and not slow you down.

James Edward Gray II



Gavin Kistner

3/29/2005 2:54:00 AM

0

On Mar 28, 2005, at 6:49 AM, Tim Hunter wrote:
> Jaypee wrote:
>> Generally, the generation of processor (G4 vs. G5) alone is
>> responsible of a similar difference at equal clock frequencies. But
>> here, I expected a bigger difference given the combined effect of a
>> higher clock, a higher generation and a dual CPU.
>
> I don't think Ruby takes advantage of the 2nd CPU. The script runs on
> only 1 CPU, so all the benefit you're seeing is from the faster clock
> speed.

So that explains part of it.

But why would a 2GHz G5 not be at least twice as fast as a 1GHz G4?

G5 versus G4 aside, the doubling of the clock rate alone should
suffice, no?

I'll have to run the test myself on my 1GHz G4 laptop versus my 2GHz G5
desktop...as soon as my wife stops playing WoW on the latter :)



Tim Hunter

3/29/2005 12:23:00 PM

0

Gavin Kistner wrote:

> But why would a 2GHz G5 not be at least twice as fast as a 1GHz G4?
>
> G5 versus G4 aside, the doubling of the clock rate alone should suffice,
> no?


Did memory access speed double, too? Bus speed? Things happen outside of
the CPU.

Shalev NessAiver

3/29/2005 9:50:00 PM

0


On Mar 29, 2005, at 7:24 AM, Timothy Hunter wrote:

> Gavin Kistner wrote:
>
>> But why would a 2GHz G5 not be at least twice as fast as a 1GHz G4?
>> G5 versus G4 aside, the doubling of the clock rate alone should
>> suffice, no?
>
>
> Did memory access speed double, too? Bus speed? Things happen outside
> of the CPU.
>
>
>

Yes. The G5 has a 1ghz bus compared to the G4's 167mhz. The RAM also
increased in speed significantly.



Jaypee

3/30/2005 6:18:00 AM

0

Jaypee a écrit :
> Hello,
>
> I am not a performance freak at all but I've noticed that despite a huge
> difference between a single CPU 1GHz G4 and a dual 2 GHz G5, both
> running ruby 1.8.2 with 1GB of RAM on Mac OS X 10.3.8, there was only a
> 33% difference in the calculation of a factorial:
> I used the following code:
> #!/usr/local/bin/ruby
> class Integer
> def factorial
> (1..self).inject(1) { |f, n| f * n }
> end
> end
>
> puts 100000.factorial
>
> It takes about 9 minutes on the lower profile machine and 6 min or so on
> the bigger one.
>
> Generally, the generation of processor (G4 vs. G5) alone is responsible
> of a similar difference at equal clock frequencies. But here, I expected
> a bigger difference given the combined effect of a higher clock, a
> higher generation and a dual CPU.
>
> BTW, I was not able to make a comparable test on my 2.6 GHz 1GB Windows
> XP SP2 workstation which failed at 9273.factorial. I don' t remember the
> message but it's easy to reproduce.
>
> Is this kind of performance "normal" given the algorithm used or is
> there a balance between the coding style and the performances that could
> be wise to consider?
>
> I have no performance objective, I am just curious.
>
> Thank you for your advices,
> Jean-Pierre
Thank you for your comments. I'd like to clear the point about Windows
XP SP2: It works well, I could run the script from a command line
(former tests were done using Eclipse and rdt) and it took 7 minutes on
a P4@2.6 Ghz + 1 GB RAM
As I happended to have access to those similar platforms in terms of RAM
and CPU, I just wanted to compare them and have an idea of performances
using Ruby.
J-P