-
-
Save antoniojrossi/1059231 to your computer and use it in GitHub Desktop.
A simple function to generate random chromosome strings
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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 |
Ahí está pae. Ese es el tema. Estas cosas están súper interesantes.
A cuidarse!
Enviado desde mi iPhone
El 02/07/2011, a las 23:12, [email protected] escribió:
… Pae, muchas gracias por la respuesta. No conocía el operador << del objeto String. Por lo que he leído en rdoc la diferencia entre el operador + y el << en los objetos de tipo String es que el operador + retorna un nuevo String con la concatenación de las dos cadenas y el operador << concatena y retorna el objeto sobre el que se ha realizado la operación de concatenado, de modo que por ahí se entiende la mejora de rendimiento. En cuanto tenga el mac a mano lo pruebo.
Saludos.
##
Reply to this email directly or view it on GitHub:
https://gist.github.com/1059231
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Pae, muchas gracias por la respuesta. No conocía el operador << del objeto String. Por lo que he leído en rdoc la diferencia entre el operador + y el << en los objetos de tipo String es que el operador + retorna un nuevo String con la concatenación de las dos cadenas y el operador << concatena y retorna el objeto sobre el que se ha realizado la operación de concatenado, de modo que por ahí se entiende la mejora de rendimiento. En cuanto tenga el mac a mano lo pruebo.
Saludos.