我需要分析rake任务。因为我是菜鸟我只知道如何配置.rb代码
像这样:ruby -Ilib -S ruby-prof -p graph_html profile.rb > profile.html
但我如何描述特定的Rake任务?
答案 0 :(得分:19)
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
答案 1 :(得分:1)
如果您想要“粗略”分析并想要找出哪个任务是瓶颈,我建议迈克威廉来自here的优秀代码。当我分析我的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
答案 2 :(得分:0)
我认为值得一提的是,如果您恰好使用捆绑程序,则可能要使用捆绑包而不是直接耙来对其进行分析。
ruby-prof -p graph_html `which bundle` -- 'exec' 'rake' '-T' > profile.html