Sha256: 8d295c71365339e84b68b5f7e1bd951624569d38bc0e4c983e475795a2f10fe4

Contents?: true

Size: 1.35 KB

Versions: 9

Compression:

Stored size: 1.35 KB

Contents

module NewRelic
  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
      def initialize(metric_name, sample)
        @metric_name = metric_name
        @total_time, @exclusive_time, @call_count = 0,0,0
        @sample = sample
      end

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

        @total_time += segment.duration
        @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

      def ui_name
        return @metric_name if @metric_name == 'Remainder'
        NewRelic::MetricParser::MetricParser.parse(@metric_name).developer_name
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 2 rubygems

Version Path
ghazel-newrelic_rpm-3.1.0.1 lib/new_relic/transaction_analysis/segment_summary.rb
newrelic_rpm-3.1.0 lib/new_relic/transaction_analysis/segment_summary.rb
newrelic_rpm-3.1.0.beta5 lib/new_relic/transaction_analysis/segment_summary.rb
newrelic_rpm-3.1.0.beta4 lib/new_relic/transaction_analysis/segment_summary.rb
newrelic_rpm-3.1.0.djlogging2 lib/new_relic/transaction_analysis/segment_summary.rb
newrelic_rpm-3.1.0.djlogging lib/new_relic/transaction_analysis/segment_summary.rb
newrelic_rpm-3.1.0.beta3 lib/new_relic/transaction_analysis/segment_summary.rb
newrelic_rpm-3.1.0.beta2 lib/new_relic/transaction_analysis/segment_summary.rb
newrelic_rpm-3.1.0.beta1 lib/new_relic/transaction_analysis/segment_summary.rb