Rails アプリで遅いところを探す

提供: MoreslowlyWiki

Hgwr 2009年9月17日 (木) 08:23 (UTC)

以下のような trace_tool.rb を lib 以下に置いて、 TraceTool.mark() をいろんな箇所に差し込んで様子を見たりする。

module TraceTool
  module_function

  START_TIME = Time.now
  @@prev_time = START_TIME
  
  def mark(msg = nil)
    now = Time.now
    t = now - START_TIME
    delta = now - @@prev_time
    @@prev_time = now
    c = caller.first
    p = Process.times
    log = '#### TraceTool.mark(): %f: %f: u=%f, s=%f, cu=%f, cs=%f: %s' %
      [t, delta, p.utime, p.stime, p.cutime, p.cstime, c]
    log += ": #{msg}" if msg
    ActiveRecord::Base.logger.debug(log)
  end
end

関連するページ

個人用ツール