Benchmark - Twin Primes
- lazy
# Twin primes benchmark ps = [2] n = 3 loop do if !ps.find{|p| n%p == 0} p [ps[-1], n] if ps[-1]+2 == n ps << n end n += 2 end
- benchmark
require 'benchmark' max = 10000 Benchmark.bm do |x| x.report do r = (2..max*2) primes = r.inject(r){|p, i| p.select{|n| n==i || n%i!=0}} twin_primes = primes.inject([]) do |t, n| n+2 == primes[primes.index(n)+1] ? t<<[n,n+2] : t end end x.report do ps = [2] n = 3 twin_primes = [] max.times do if !ps.find{|p| n%p == 0} twin_primes << [ps[-1], n] if ps[-1]+2 == n ps << n end n += 2 end end end =begin user system total real 61.508000 0.150000 61.658000 ( 65.320000) 4.507000 0.000000 4.507000 ( 4.817000) =end