class Mmtrix::Rack::DeveloperMode::SegmentSummary

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/mmtrix/rack/developer_mode/segment_summary.rb, line 13
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/mmtrix/rack/developer_mode/segment_summary.rb, line 20
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/mmtrix/rack/developer_mode/segment_summary.rb, line 35
def average_exclusive_time
  @exclusive_time / @call_count
end
average_time() click to toggle source
# File lib/mmtrix/rack/developer_mode/segment_summary.rb, line 31
def average_time
  @total_time / @call_count
end
exclusive_time_percentage() click to toggle source
# File lib/mmtrix/rack/developer_mode/segment_summary.rb, line 39
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/mmtrix/rack/developer_mode/segment_summary.rb, line 44
def total_time_percentage
  return 0 unless @total_time && @sample.duration && @sample.duration > 0
  @total_time / @sample.duration
end
ui_name() click to toggle source
# File lib/mmtrix/rack/developer_mode/segment_summary.rb, line 49
def ui_name
  return @metric_name if @metric_name == 'Remainder'
  Mmtrix::MetricParser::MetricParser.parse(@metric_name).developer_name
end