Hi ..... thanks to Aleksi for porting the Python benchmark. However, I get a parse error referring to the line: count +=1 when I try to run the code below on my machine. I've double checked the code. Will try again later tonight. I deeply appreciate the response to my inquiry. Ken Rhodes ruby-talk / netlab.co.jp wrote: > > > Kenneth Rhodes writes: > > > > > Hi..... I am a Ruby novice, really just a curious inquirer. I would > > > appreciate someone translating the attached python sieve benchmark > > > to RUBY, it would really help me get a handle on the way Ruby is > > > written. > > Dave: > > > I didn't unpack your code, but you'll find python, Ruby, perl, and > > other Sieve benchmarks at: > > > > http://www.bagley.org/~doug/shootout/bench/sieve/ > > > > Click on the language to see the source. > > I became curious a little and thought to translate the original source. I > wrapped it to a class, but didn't touch the original logic. > > class Sieve > attr_accessor :size, :flags > def initialize(size = 500) > @size = size > end > > def sieve > count = 0 > @flags = Array.new(@size + 1, true) > for i in 1..@size > if @flags[i] > prime = 2 * i > prime = prime + 1 > start = prime + i > start.step(@size, prime) do |k| > @flags[k] = false > end > count += 1 > end > end > return count > end > end > > def benchmark(sieve, seconds = 15, batch = 50) > puts "prime sieve benchmark" > cycles = 0 > t = Time.now > while Time.now < t + seconds > batch.times do > nprimes = sieve.sieve > puts "whoops!" unless nprimes == 167 > end > cycles += batch > end > > t = Time.now - t > puts "#{cycles / t} sieves per second" > > print "%3d " % 2 > 1.upto(sieve.size) do |i| > print "%3d " % (i*2 + 1) if sieve.flags[i] > end > puts > end > > benchmark( Sieve.new(size = 500), seconds = 15, batch = 50) > > The results: > > sieve.py: 235.178 sieves per second (15.11user) > sieve.rb: 225.616033 sieves per second (15.02user) > > Lefts me wonder why the Ruby test at Dougs site was dramatically faster than > Python, but in this version was slightly slower (except that this one used > less wall clock time :). I don't have time to investigate though. > > - Aleksi > -- Ken Rhodes __________________________________________________________________ Get your own FREE, personal Netscape Webmail account today at http://webmail.netscape.com/