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

