From: "Ron Jeffries" <ronjeffries / acm.org>
>
> When in the Rails ruby folder, we run
> ruby runner.rb ruby
> Chet's machine takes about 6 seconds, and mine takes 93 seconds.
This may be like 'slaking a thirst with a firehose', but...
Maybe instrumenting runner.rb with a trace function:
def __trace_on__
trace_proc = proc do |event, file, line, id, binding, classname|
return if file =~ %r{lib/ruby/}
trace_str = sprintf( "%14.3f %8s %s:%-2d %10s %8s <%d>",
Time.now.to_f, event, file, line, id,
classname, Thread.current.object_id )
$stderr.puts trace_str
end
set_trace_func trace_proc
end
def __trace_off__
set_trace_func nil
end
__trace_on__
... This will output a LOT of information, tracing each line
of code executed and printing a timestamp. But maybe it might
reveal something about where the slowdown is occurring. (If
the tracing itself doesn't add so much overhead as to mask
the problem <grin>.)
Note that by default, to cut down on the spam, I have the trace
func ignore files having lib/ruby/ in their path. You may need
to modify that if you aren't seeing the output you're interested
in.
Hope this helps,
Bill