Skip to content

Instantly share code, notes, and snippets.

@antoniojrossi
Forked from jfcalvo/chromosomes.rb
Created July 1, 2011 19:33
Show Gist options
  • Save antoniojrossi/1059231 to your computer and use it in GitHub Desktop.
Save antoniojrossi/1059231 to your computer and use it in GitHub Desktop.
A simple function to generate random chromosome strings
# 72.217263 seconds generating 10.000.000 chromosomes
def generate_chromosome_1(length, alleles)
(1..length).collect { alleles[rand(alleles.size)] }.join
end
# 64.619006 seconds generating 10.000.000 chromosomes
def generate_chromosome_2(length, alleles)
chromosome = String.new
for i in 1..length
chromosome += alleles[rand(alleles.size)]
end
return chromosome
end
# 61.679619 second generating 10.000.000 chromosomes
def generate_chromosome_3(length, alleles)
chromosome = String.new
length.times do
chromosome += alleles[rand(alleles.size)]
end
return chromosome
end
# 51.38105 second generating 10.000.000 chromosomes
def generate_chromosome_4(length, alleles)
chromosome = ""
length.times do
chromosome << alleles[rand(alleles.size)]
end
return chromosome
end
def measure_time(repeat)
start = Time.now
repeat.times { yield }
puts "Took #{Time.now - start} seconds, repeating #{repeat} times."
end
repeat = 10000000
# puts "Using generate_chromosome_1:"
# measure_time(repeat) { generate_chromosome_1 8, "01" }
#
# puts "Using generate_chromosome_2:"
# measure_time(repeat) { generate_chromosome_2 8, "01" }
#
# puts "Using generate_chromosome_3:"
# measure_time(repeat) { generate_chromosome_3 8, "01" }
#
# puts "Using generate_chromosome_4:"
# measure_time(repeat) { generate_chromosome_4 8, "01" }
(1..4).each do |i|
puts "Using generate_chromosome_#{i}"
measure_time(repeat) {send "generate_chromosome_#{i}", 8, "01"}
end
@antoniojrossi
Copy link
Author

antoniojrossi commented Jul 2, 2011 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment