# File lib/ruby-prof/method_info.rb, line 6 def <=>(other) if self.total_time < other.total_time -1 elsif self.total_time > other.total_time 1 elsif self.min_depth < other.min_depth 1 elsif self.min_depth > other.min_depth -1 else self.full_name <=> other.full_name end end
# File lib/ruby-prof/method_info.rb, line 105 def aggregate_children # Group call info's based on their targets groups = self.children.inject(Hash.new) do |hash, call_info| key = call_info.target (hash[key] ||= []) << call_info hash end groups.map do |key, value| AggregateCallInfo.new(value) end end
# File lib/ruby-prof/method_info.rb, line 92 def aggregate_parents # Group call info's based on their parents groups = self.call_infos.inject(Hash.new) do |hash, call_info| key = call_info.parent ? call_info.parent.target : self (hash[key] ||= []) << call_info hash end groups.map do |key, value| AggregateCallInfo.new(value) end end
# File lib/ruby-prof/method_info.rb, line 20 def called @called ||= begin call_infos.inject(0) do |sum, call_info| sum += call_info.called end end end
# File lib/ruby-prof/method_info.rb, line 84 def children @children ||= begin call_infos.map do |call_info| call_info.children end.flatten end end
# File lib/ruby-prof/method_info.rb, line 55 def children_time @children_time ||= begin call_infos.inject(0) do |sum, call_info| sum += call_info.children_time unless call_info.recursive sum end end end
remove method from the call graph. should not be called directly.
# File lib/ruby-prof/method_info.rb, line 123 def eliminate! # $stderr.puts "eliminating #{self}" call_infos.each{ |call_info| call_info.eliminate! } call_infos.clear end
# File lib/ruby-prof/method_info.rb, line 64 def min_depth @min_depth ||= call_infos.map do |call_info| call_info.depth end.min end
# File lib/ruby-prof/method_info.rb, line 78 def recursive? call_infos.detect do |call_info| call_info.recursive end end
# File lib/ruby-prof/method_info.rb, line 70 def root? @root ||= begin call_infos.find do |call_info| not call_info.root? end.nil? end end
# File lib/ruby-prof/method_info.rb, line 37 def self_time @self_time ||= begin call_infos.inject(0) do |sum, call_info| sum += call_info.self_time unless call_info.recursive sum end end end
# File lib/ruby-prof/method_info.rb, line 118 def to_s "#{self.full_name} (c: #{self.called}, tt: #{self.total_time}, st: #{self.self_time}, ct: #{self.children_time})" end
# File lib/ruby-prof/method_info.rb, line 28 def total_time @total_time ||= begin call_infos.inject(0) do |sum, call_info| sum += call_info.total_time unless call_info.recursive sum end end end
# File lib/ruby-prof/method_info.rb, line 46 def wait_time @wait_time ||= begin call_infos.inject(0) do |sum, call_info| sum += call_info.wait_time unless call_info.recursive sum end end end