Class: Rack::MiniProfiler::RequestTimerStruct
- Inherits:
-
TimerStruct
- Object
- TimerStruct
- Rack::MiniProfiler::RequestTimerStruct
- Defined in:
- lib/mini_profiler/request_timer_struct.rb
Instance Attribute Summary collapse
-
#children_duration ⇒ Object
Returns the value of attribute children_duration.
Class Method Summary collapse
Instance Method Summary collapse
- #add_child(name) ⇒ Object
- #add_custom(type, elapsed_ms, page) ⇒ Object
- #add_sql(query, elapsed_ms, page, skip_backtrace = false, full_backtrace = false) ⇒ Object
- #children ⇒ Object
- #depth ⇒ Object
- #duration_ms ⇒ Object
-
#initialize(name, page, parent) ⇒ RequestTimerStruct
constructor
A new instance of RequestTimerStruct.
- #record_time(milliseconds = nil) ⇒ Object
- #start ⇒ Object
- #start_ms ⇒ Object
Methods inherited from TimerStruct
#[], #[]=, #attributes, #to_json
Constructor Details
#initialize(name, page, parent) ⇒ RequestTimerStruct
Returns a new instance of RequestTimerStruct.
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File '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 |
Instance Attribute Details
#children_duration ⇒ Object
Returns the value of attribute children_duration.
14 15 16 |
# File 'lib/mini_profiler/request_timer_struct.rb', line 14 def children_duration @children_duration end |
Class Method Details
.createRoot(name, page) ⇒ Object
8 9 10 11 12 |
# File '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 |
Instance Method Details
#add_child(name) ⇒ Object
65 66 67 68 69 70 71 72 |
# File '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) ⇒ Object
84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
# File '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) ⇒ Object
74 75 76 77 78 79 80 81 82 |
# File '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 ⇒ Object
61 62 63 |
# File 'lib/mini_profiler/request_timer_struct.rb', line 61 def children self['Children'] end |
#depth ⇒ Object
57 58 59 |
# File 'lib/mini_profiler/request_timer_struct.rb', line 57 def depth self['Depth'] end |
#duration_ms ⇒ Object
45 46 47 |
# File 'lib/mini_profiler/request_timer_struct.rb', line 45 def duration_ms self['DurationMilliseconds'] end |
#record_time(milliseconds = nil) ⇒ Object
101 102 103 104 105 106 107 108 109 110 111 |
# File '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 ⇒ Object
53 54 55 |
# File 'lib/mini_profiler/request_timer_struct.rb', line 53 def start @start end |
#start_ms ⇒ Object
49 50 51 |
# File 'lib/mini_profiler/request_timer_struct.rb', line 49 def start_ms self['StartMilliseconds'] end |