[lnkForumImage]
TotalShareware - Download Free Software

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


 

Forums >

comp.lang.ruby

Great Computer Language Shootout

Isaac Gouy

3/12/2005 12:13:00 AM

We've added some new micro-benchmarks and deprecated some of the old
ones.
So now Ruby is missing a dozen programs!

http://shootout.alioth.d...

If you have a few moments please contribute stylish Ruby programs.

best wishes, Isaac

9 Answers

William James

3/12/2005 10:27:00 AM

0

igouy@yahoo.com wrote:
> We've added some new micro-benchmarks and deprecated some of the old
> ones.
> So now Ruby is missing a dozen programs!
>
> http://shootout.alioth.d...
>
> If you have a few moments please contribute stylish Ruby programs.
>
> best wishes, Isaac

Here's a shorter and, I think, slightly faster program to count
word-frequencies.

freq = Hash.new(0)
loop {
data = (STDIN.read(4095) or break) + (STDIN.gets || "")
for word in data.downcase!.tr!('^a-z',' ').split
freq[word] += 1
end
}
print freq.to_a.map{|x| sprintf("%7d %s\n",x[1],x[0])}.sort.reverse

Can anyone explain why the Perl version is 4 times as fast as the
Ruby one?

Isaac Gouy

3/12/2005 3:44:00 PM

0


William James wrote:
> igouy@yahoo.com wrote:
> > We've added some new micro-benchmarks and deprecated some of the
old
> > ones.
> > So now Ruby is missing a dozen programs!
> >
> > http://shootout.alioth.d...
> >
> > If you have a few moments please contribute stylish Ruby programs.
> >
> > best wishes, Isaac
>
> Here's a shorter and, I think, slightly faster program to count
> word-frequencies.
>
> freq = Hash.new(0)
> loop {
> data = (STDIN.read(4095) or break) + (STDIN.gets || "")
> for word in data.downcase!.tr!('^a-z',' ').split
> freq[word] += 1
> end
> }
> print freq.to_a.map{|x| sprintf("%7d %s\n",x[1],x[0])}.sort.reverse
>
> Can anyone explain why the Perl version is 4 times as fast as the
> Ruby one?


Thanks William, I'm afraid we need the programs to be sent to the
shootout, we can't skim them from other places.

Some folk just post them on the mailing list:
http://shootout.alioth.d...miscfile.php?sort=fullcpu&file=mailinglist&title=mailing%20list

others use the message form or email them to igouy2

best wishes, Isaac

Isaac Gouy

3/12/2005 3:55:00 PM

0


William James wrote:
> igouy@yahoo.com wrote:
> > We've added some new micro-benchmarks and deprecated some of the
old
> > ones.
> > So now Ruby is missing a dozen programs!
> >
> > http://shootout.alioth.d...
> >
> > If you have a few moments please contribute stylish Ruby programs.
> >
> > best wishes, Isaac
>
> Here's a shorter and, I think, slightly faster program to count
> word-frequencies.
>
> freq = Hash.new(0)
> loop {
> data = (STDIN.read(4095) or break) + (STDIN.gets || "")
> for word in data.downcase!.tr!('^a-z',' ').split
> freq[word] += 1
> end
> }
> print freq.to_a.map{|x| sprintf("%7d %s\n",x[1],x[0])}.sort.reverse

Excellent!

Before we can use it I'm afraid you have to contribute it to the
shootout, we can't just skim programs from other places.

Please send programs to the mailing list or send them using the message
form or email them to igouy2

http://shootout.alioth.d...faq.php?sort=fullcpu

best wishes, Isaac

William James

3/12/2005 6:59:00 PM

0


igouy@yahoo.com wrote:
> William James wrote:
> > igouy@yahoo.com wrote:
> > > We've added some new micro-benchmarks and deprecated some of the
> old
> > > ones.
> > > So now Ruby is missing a dozen programs!
> > >
> > > http://shootout.alioth.d...
> > >
> > > If you have a few moments please contribute stylish Ruby
programs.
> > >
> > > best wishes, Isaac
> >
> > Here's a shorter and, I think, slightly faster program to count
> > word-frequencies.
> >
> > freq = Hash.new(0)
> > loop {
> > data = (STDIN.read(4095) or break) + (STDIN.gets || "")
> > for word in data.downcase!.tr!('^a-z',' ').split
> > freq[word] += 1
> > end
> > }
> > print freq.to_a.map{|x| sprintf("%7d %s\n",x[1],x[0])}.sort.reverse
>
> Excellent!
>
> Before we can use it I'm afraid you have to contribute it to the
> shootout, we can't just skim programs from other places.
>
> Please send programs to the mailing list or send them using the
message
> form or email them to igouy2
>
> http://shootout.alioth.d...faq.php?sort=fullcpu
>
> best wishes, Isaac

Ruby gurus: before this is sent to the shootout, would you check
it to see if it can be made faster? (It has already been checked
for correctness.)

Carlos

3/16/2005 12:14:00 PM

0

[William James <w_a_x_man@yahoo.com>, 2005-03-15 14.56 CET]
> > William James wrote:
[...]
> > > freq = Hash.new(0)
> > > loop {
> > > data = (STDIN.read(4095) or break) + (STDIN.gets || "")
> > > for word in data.downcase!.tr!('^a-z',' ').split

But "a".downcase! => nil ... And the same with most !-methods (they return
nil when nothing was changed).



Daniel Amelang

3/17/2005 12:16:00 AM

0

> But "a".downcase! => nil ... And the same with most !-methods (they return
> nil when nothing was changed).

That always bothered me, since I lose my method chaining with !
methods. Like this:

line.strip!.downcase!

must be

line.strip.downcase

to work properly. But then you lose some efficiency.

I'd prefer that ! methods returned 'self'. In the *rare* case that I
need to know if something changed, I'll use == or something. RCR in
the making?

Dan


Michael Campbell

3/17/2005 12:42:00 AM

0

It's been suggested many times. I agree, but my vote hardly counts. =)


On Thu, 17 Mar 2005 09:16:26 +0900, Daniel Amelang
<daniel.amelang@gmail.com> wrote:
> > But "a".downcase! => nil ... And the same with most !-methods (they return
> > nil when nothing was changed).
>
> That always bothered me, since I lose my method chaining with !
> methods. Like this:
>
> line.strip!.downcase!
>
> must be
>
> line.strip.downcase
>
> to work properly. But then you lose some efficiency.
>
> I'd prefer that ! methods returned 'self'. In the *rare* case that I
> need to know if something changed, I'll use == or something. RCR in
> the making?
>
> Dan
>
>


Hal E. Fulton

3/17/2005 12:42:00 AM

0

Daniel Amelang wrote:
>>But "a".downcase! => nil ... And the same with most !-methods (they return
>>nil when nothing was changed).
>
>
> That always bothered me, since I lose my method chaining with !
> methods. Like this:
>
> line.strip!.downcase!
>
> must be
>
> line.strip.downcase
>
> to work properly. But then you lose some efficiency.
>
> I'd prefer that ! methods returned 'self'. In the *rare* case that I
> need to know if something changed, I'll use == or something. RCR in
> the making?

It's been discussed a lot over the years. My impression is that
Matz likes this behavior, in which case it would be unlikely to
change.


Hal




Isaac Gouy

3/29/2005 6:38:00 PM

0

We've made it somewhat easier to contribute programs.

No need to subscribe to the mailing-list.
No need for a user-id or login.

See the FAQ "How can I contribute a program?"
http://shootout.alioth.debian.org/faq.php?so...