Sha256: 4c4665e90d919d469951bac9c996b2449c1408b29a45cf2a90c4f43c5275bba0

Contents?: true

Size: 836 Bytes

Versions: 2

Compression:

Stored size: 836 Bytes

Contents

module RubyProf
  class Thread
    def top_methods
      self.methods.select do |method_info|
        method_info.call_infos.detect(&:root?)
      end
    end

    def top_call_infos
      top_methods.map(&:call_infos).flatten.select(&:root?)
    end

    def total_time
      self.top_methods.inject(0) do |sum, method_info|
        method_info.call_infos.each do |call_info|
          if call_info.parent.nil?
            sum += call_info.total_time
          end
        end
        sum
      end
    end

    def wait_time
      # wait_time, like self:time, is always method local
      # thus we need to sum over all methods and call infos
      self.methods.inject(0) do |sum, method_info|
        method_info.call_infos.each do |call_info|
          sum += call_info.wait_time
        end
        sum
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 2 rubygems

Version Path
ruby-prof-0.17.0 lib/ruby-prof/thread.rb
airbnb-ruby-prof-0.0.1 lib/ruby-prof/thread.rb