class OneApm::TransactionAnalysis::SegmentSummary

summarizes performance data for all calls to segments with the same metric_name

Attributes

call_count[RW]
current_nest_count[RW]
exclusive_time[RW]
metric_name[RW]
total_time[RW]

Public Class Methods

new(metric_name, sample) click to toggle source
# File lib/one_apm/transaction/segment_summary.rb, line 9
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

Public Instance Methods

<<(segment) click to toggle source
# File lib/one_apm/transaction/segment_summary.rb, line 16
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
average_exclusive_time() click to toggle source
# File lib/one_apm/transaction/segment_summary.rb, line 31
def average_exclusive_time
  @exclusive_time / @call_count
end
average_time() click to toggle source
# File lib/one_apm/transaction/segment_summary.rb, line 27
def average_time
  @total_time / @call_count
end
exclusive_time_percentage() click to toggle source
# File lib/one_apm/transaction/segment_summary.rb, line 35
def exclusive_time_percentage
  return 0 unless @exclusive_time && @sample.duration && @sample.duration > 0
  @exclusive_time / @sample.duration
end
total_time_percentage() click to toggle source
# File lib/one_apm/transaction/segment_summary.rb, line 40
def total_time_percentage
  return 0 unless @total_time && @sample.duration && @sample.duration > 0
  @total_time / @sample.duration
end