rake task profile ruby-prof

¿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