Sha256: 3a39895b14664d38074bcf25a8e0a64b7474a8c115b191e1af40bd5184cb8e4a

Contents?: true

Size: 1.35 KB

Versions: 38

Compression:

Stored size: 1.35 KB

Contents

# encoding: utf-8

module OneApm
  module TransactionAnalysis
    # summarizes performance data for all calls to segments
    # with the same metric_name
    class SegmentSummary
      attr_accessor :metric_name, :total_time, :exclusive_time, :call_count, :current_nest_count
      def initialize(metric_name, sample)
        @metric_name = metric_name
        @total_time, @exclusive_time, @call_count = 0,0,0
        @sample = sample
        @current_nest_count = 0
      end

      def <<(segment)
        if metric_name != segment.metric_name
          raise ArgumentError, "Metric Name Mismatch: #{segment.metric_name} != #{metric_name}"
        end

        # a nested segment should use the sum of the top level totals
        @total_time += segment.duration if current_nest_count == 0
        @exclusive_time += segment.exclusive_duration
        @call_count += 1
      end

      def average_time
        @total_time / @call_count
      end

      def average_exclusive_time
        @exclusive_time / @call_count
      end

      def exclusive_time_percentage
        return 0 unless @exclusive_time && @sample.duration && @sample.duration > 0
        @exclusive_time / @sample.duration
      end

      def total_time_percentage
        return 0 unless @total_time && @sample.duration && @sample.duration > 0
        @total_time / @sample.duration
      end
    end
  end
end

Version data entries

38 entries across 38 versions & 1 rubygems

Version Path
oneapm_rpm-1.4.2 lib/one_apm/transaction/segment_summary.rb
oneapm_rpm-1.4.1 lib/one_apm/transaction/segment_summary.rb
oneapm_rpm-1.4.0 lib/one_apm/transaction/segment_summary.rb
oneapm_rpm-1.3.7 lib/one_apm/transaction/segment_summary.rb
oneapm_rpm-1.3.7.rc1 lib/one_apm/transaction/segment_summary.rb
oneapm_rpm-1.3.6 lib/one_apm/transaction/segment_summary.rb
oneapm_rpm-1.3.6.rc1 lib/one_apm/transaction/segment_summary.rb
oneapm_rpm-1.3.5 lib/one_apm/transaction/segment_summary.rb
oneapm_rpm-1.3.5.rc1 lib/one_apm/transaction/segment_summary.rb
oneapm_rpm-1.3.4 lib/one_apm/transaction/segment_summary.rb
oneapm_rpm-1.3.4.rc1 lib/one_apm/transaction/segment_summary.rb
oneapm_rpm-1.3.3 lib/one_apm/transaction/segment_summary.rb
oneapm_rpm-1.3.3.rc1 lib/one_apm/transaction/segment_summary.rb
oneapm_rpm-1.3.2 lib/one_apm/transaction/segment_summary.rb
oneapm_rpm-1.3.2.rc1 lib/one_apm/transaction/segment_summary.rb
oneapm_rpm-1.3.1 lib/one_apm/transaction/segment_summary.rb
oneapm_rpm-1.3.1.rc1 lib/one_apm/transaction/segment_summary.rb
oneapm_rpm-1.3.0 lib/one_apm/transaction/segment_summary.rb
oneapm_rpm-1.3.0.rc1 lib/one_apm/transaction/segment_summary.rb
oneapm_rpm-1.2.9 lib/one_apm/transaction/segment_summary.rb