如何描述Rake任务?

时间:2010-11-16 23:18:52

标签: rake task profile ruby-prof

我需要分析rake任务。因为我是菜鸟我只知道如何配置.rb代码 像这样:ruby -Ilib -S ruby-prof -p graph_html profile.rb > profile.html

但我如何描述特定的Rake任务?

3 个答案:

答案 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