class Rack::MiniProfiler::RequestTimerStruct

Attributes

children_duration[RW]

Public Class Methods

createRoot(name, page) click to toggle source
# File Ruby/lib/mini_profiler/request_timer_struct.rb, line 8
def self.createRoot(name, page)
  rt = RequestTimerStruct.new(name, page, nil)
  rt["IsRoot"]= true
  rt
end
new(name, page, parent) click to toggle source
Calls superclass method
# File Ruby/lib/mini_profiler/request_timer_struct.rb, line 16
def initialize(name, page, parent)
  super("Id" => MiniProfiler.generate_id,
        "Name" => name,
        "DurationMilliseconds" => 0,
        "DurationWithoutChildrenMilliseconds"=> 0,
        "StartMilliseconds" => (Time.now.to_f * 1000).to_i - page['Started'],
        "ParentTimingId" => nil,
        "Children" => [],
        "HasChildren"=> false,
        "KeyValues" => nil,
        "HasSqlTimings"=> false,
        "HasDuplicateSqlTimings"=> false,
        "TrivialDurationThresholdMilliseconds" => 2,
        "SqlTimings" => [],
        "SqlTimingsDurationMilliseconds"=> 0,
        "IsTrivial"=> false,
        "IsRoot"=> false,
        "Depth"=> parent ? parent.depth + 1 : 0,
        "ExecutedReaders"=> 0,
        "ExecutedScalars"=> 0,
        "ExecutedNonQueries"=> 0,
        "CustomTimingStats" => {},
        "CustomTimings" => {})
  @children_duration = 0
  @start = Time.now
  @parent = parent
  @page = page
end

Public Instance Methods

add_child(name) click to toggle source
# File Ruby/lib/mini_profiler/request_timer_struct.rb, line 65
def add_child(name)
  request_timer =  RequestTimerStruct.new(name, @page, self)
  self['Children'].push(request_timer)
  self['HasChildren'] = true
  request_timer['ParentTimingId'] = self['Id']
  request_timer['Depth'] = self['Depth'] + 1
  request_timer
end
add_custom(type, elapsed_ms, page) click to toggle source
# File Ruby/lib/mini_profiler/request_timer_struct.rb, line 84
def add_custom(type, elapsed_ms, page)
  timer = CustomTimerStruct.new(type, elapsed_ms, page, self)
  timer['ParentTimingId'] = self['Id']
  self['CustomTimings'][type] ||= []
  self['CustomTimings'][type].push(timer)

  self['CustomTimingStats'][type] ||= {"Count" => 0, "Duration" => 0.0}
  self['CustomTimingStats'][type]['Count'] += 1
  self['CustomTimingStats'][type]['Duration'] += elapsed_ms

  page['CustomTimingStats'][type] ||= {"Count" => 0, "Duration" => 0.0}
  page['CustomTimingStats'][type]['Count'] += 1
  page['CustomTimingStats'][type]['Duration'] += elapsed_ms

  timer
end
add_sql(query, elapsed_ms, page, skip_backtrace = false, full_backtrace = false) click to toggle source
# File Ruby/lib/mini_profiler/request_timer_struct.rb, line 74
def add_sql(query, elapsed_ms, page, skip_backtrace = false, full_backtrace = false)
  timer = SqlTimerStruct.new(query, elapsed_ms, page, self , skip_backtrace, full_backtrace)
  timer['ParentTimingId'] = self['Id']
  self['SqlTimings'].push(timer)
  self['HasSqlTimings'] = true
  self['SqlTimingsDurationMilliseconds'] += elapsed_ms
  page['DurationMillisecondsInSql'] += elapsed_ms        
  timer
end
children() click to toggle source
# File Ruby/lib/mini_profiler/request_timer_struct.rb, line 61
def children
  self['Children']
end
depth() click to toggle source
# File Ruby/lib/mini_profiler/request_timer_struct.rb, line 57
def depth
  self['Depth']
end
duration_ms() click to toggle source
# File Ruby/lib/mini_profiler/request_timer_struct.rb, line 45
def duration_ms
  self['DurationMilliseconds']
end
record_time(milliseconds = nil) click to toggle source
# File Ruby/lib/mini_profiler/request_timer_struct.rb, line 101
def record_time(milliseconds = nil)
  milliseconds ||= (Time.now - @start) * 1000
  self['DurationMilliseconds'] = milliseconds
  self['IsTrivial'] = true if milliseconds < self["TrivialDurationThresholdMilliseconds"]
  self['DurationWithoutChildrenMilliseconds'] = milliseconds - @children_duration
  
  if @parent
    @parent.children_duration += milliseconds
  end

end
start() click to toggle source
# File Ruby/lib/mini_profiler/request_timer_struct.rb, line 53
def start
  @start
end
start_ms() click to toggle source
# File Ruby/lib/mini_profiler/request_timer_struct.rb, line 49
def start_ms
  self['StartMilliseconds']
end