def print_methods(thread)
total_time = thread.top_method.total_time
methods = thread.methods.sort_by(&sort_method).reverse
sum = 0
methods.each do |method|
self_percent = (method.self_time / total_time) * 100
next if self_percent < min_percent
sum += method.self_time
@output << "%6.2f %8.2f %8.2f %8.2f %8.2f %8d %s%s \n" % [
method.self_time / total_time * 100,
method.total_time,
method.self_time,
method.wait_time,
method.children_time,
method.called,
method.recursive? ? "*" : " ",
method_name(method)
]
if method.source_file != 'ruby_runtime'
@output << " %s:%s" % [File.expand_path(method.source_file), method.line]
end
@output << "\n\tcalled from: "
method.call_infos.map{|ci|
if ci.parent && ci.parent.target.source_file != 'ruby_runtime'
[method_name(ci.parent.target), File.expand_path(ci.parent.target.source_file), ci.parent.target.line]
else
nil
end
}.compact.uniq.each{|args|
@output << " %s (%s:%s) " % args
}
@output << "\n\n"
end
end