class RubyProf::MethodInfo

Public Instance Methods

<=>(other) click to toggle source
# 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
aggregate_children() click to toggle source
# 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
aggregate_parents() click to toggle source
# 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
called() click to toggle source
# 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
children() click to toggle source
# 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
children_time() click to toggle source
# 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
eliminate!() click to toggle source

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
min_depth() click to toggle source
# 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
recursive?() click to toggle source
# File lib/ruby-prof/method_info.rb, line 78
def recursive?
  call_infos.detect do |call_info|
    call_info.recursive
  end
end
root?() click to toggle source
# 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
self_time() click to toggle source
# 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
to_s() click to toggle source
# 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
total_time() click to toggle source
# 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
wait_time() click to toggle source
# 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