From: Mike Conigliaro Date: 2011-09-29T02:27:45+09:00 Subject: [ruby-core:39769] [Ruby 1.9 - Bug #5378][Open] Prime.each is slow Issue #5378 has been reported by Mike Conigliaro. ---------------------------------------- Bug #5378: Prime.each is slow http://redmine.ruby-lang.org/issues/5378 Author: Mike Conigliaro Status: Open Priority: Normal Assignee: Category: Target version: ruby -v: 1.9.2p290 (2011-07-09 revision 32553) [x86_64-darwin10.8.0] See discussion here: https://gist.github.com/1246868 require 'benchmark' require 'prime' def primes_up_to(n) s = [nil, nil] + (2..n).to_a (2..(n ** 0.5).to_i).reject { |i| s[i].nil? }.each do |i| (i ** 2).step(n, i) { |j| s[j] = nil } end s.compact end Benchmark.bm(12) do |x| x.report('primes_up_to') { primes_up_to(2000000).inject(0) { |memo,obj| memo + obj } } x.report('Prime.each') { Prime.each(2000000).inject(0) { |memo,obj| memo + obj } } end $ ruby -v ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-darwin10.8.0] $ ruby lol.rb user system total real primes_up_to 1.470000 0.020000 1.490000 ( 1.491340) Prime.each 7.820000 0.010000 7.830000 ( 7.820969) -- http://redmine.ruby-lang.org