Pastie now auto-senses if line-wrap is a bad or good idea. Feedback?
## mark a section (Learn more)
require 'benchmark' require ARGV[0] || 'rq225' N=20 module GenSets module_function def gen(nelements, ndsets, xelements, nxsets) step = nelements / ndsets dsets = (1..nelements).each_slice(step).to_a xsets = [] nxsets1 = nxsets / ndsets permlen = xelements dsets.each do |set| fix = set[0] nxsets1.times do perm = (1..permlen).map {set[rand(set.size)]} xsets << (perm << fix).uniq end end return xsets end end Benchmark::bm(40) do |b| 1.step(101, 50) do |nsets| 1.upto(10) do |felements| nelements = nsets * felements nx = nelements / 3 + 1 ns = nsets * 5 b.report("elements * sets: #{nx} * #{ns} => #{nelements / nsets} * #{nsets}") do sets = GenSets.gen(nelements, nsets, nx, ns) N.times do dsets = distinct_sets(sets) end end end end end
This paste will be private.
From the Design Piracy series on my blog: