rake タスクのプロファイルを作成する必要があります。私は初心者なので、.rb コードを次のようにプロファイリングする方法しか知りません。ruby -Ilib -S ruby-prof -p graph_html profile.rb > profile.html
しかし、特定の Rake タスクをプロファイルするにはどうすればよいでしょうか?
Rakeは単なるRubyスクリプトであるため、他のスクリプトのプロファイルを作成するのと同じように、rakeに対してruby-profを呼び出すことができるはずです。
ruby-profを呼び出したら、次のことを試してください。
ruby -Ilib -S ruby-prof -p graph_html `which rake` TASK > profile.html
次のコマンドラインを使用しました。
ruby-prof -p graph_html /usr/local/bin/rake19 import_from_aws file=~/sourcedata batch=test1 > /tmp/profile.html
次の呼び出しをプロファイリングするには:
rake19 import_from_aws file=~/sourcedata batch=test1
「粗い」プロファイリングが必要で、どのタスクがボトルネックであるかを知りたい場合は、Mike William の優れたコードをここから参照することをお勧めします。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