Great Computer Language Shootout

W

William James

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.debian.org/

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?
 
I

igouy

William said:
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.debian.org/

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.debian.org/miscfile.php?sort=fullcpu&file=mailinglist&title=mailing list

others use the message form or email them to igouy2

best wishes, Isaac
 
I

igouy

William said:
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.debian.org/

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.debian.org/faq.php?sort=fullcpu

best wishes, Isaac
 
W

William James

William said:
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.debian.org/

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.debian.org/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.)
 
D

Daniel Amelang

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
 
H

Hal Fulton

Daniel said:
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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,744
Messages
2,569,484
Members
44,903
Latest member
orderPeak8CBDGummies

Latest Threads

Top