Мне нужно профилировать задачу рейка. Потому что я нооб. Я знаю только, как профилировать код .rb.
например: ruby -Ilib -S ruby-prof -p graph_html profile.rb > profile.html
Но как мне настроить конкретную задачу Rake?
Ответ 1
Рейк - это всего лишь Ruby script, поэтому вы можете просто вызвать ruby-prof против rake, так же, как вы бы профилировали любой другой script.
Если вы хотите "грубо" профилировать и хотите выяснить, какая задача является узким местом, я предлагаю Майк Уильям отличный фрагмент кода здесь, Он работал красиво, когда я выполнял профилирование задач 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