¿Cómo perfilar la tarea Rake?
task profile (3)
Creo que vale la pena mencionar que es posible que desee crear un perfil utilizando bundle en lugar de rake directamente si está usando bundler.
ruby-prof -p graph_html `which bundle` -- ''exec'' ''rake'' ''-T'' > profile.html
Necesito perfilar la tarea del rastrillo. Porque noob, solo sé cómo perfilar código .rb así: ruby -Ilib -S ruby-prof -p graph_html profile.rb > profile.html
Pero, ¿cómo perfilo una tarea específica de Rake?
Rake es solo un script de Ruby, por lo que deberías poder llamar a ruby-prof contra rake, de la misma forma en que perfilarías cualquier otro script.
Dada tu invocación de ruby-prof, prueba:
ruby -Ilib -S ruby-prof -p graph_html `which rake` TASK > profile.html
Acabo de usar la siguiente línea de comando:
ruby-prof -p graph_html /usr/local/bin/rake19 import_from_aws file=~/sourcedata batch=test1 > /tmp/profile.html
Para perfilar una invocación de:
rake19 import_from_aws file=~/sourcedata batch=test1
Si desea un perfil ''grueso'' y quiere averiguar cuál es la tarea del cuello de botella, sugiero el excelente código de Mike William desde here . Funcionó a la perfección cuando estaba perfilando mis tareas de Rake.
module Rake
class Task
def execute_with_timestamps(*args)
start = Time.now
execute_without_timestamps(*args)
execution_time_in_seconds = Time.now - start
printf("** %s took %.1f seconds/n", name, execution_time_in_seconds)
end
alias :execute_without_timestamps :execute
alias :execute :execute_with_timestamps
end
end