# 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