Class: ActiveSupport::Notifications::Event
Relationships & Source Files | |
Inherits: | Object |
Defined in: | activesupport/lib/active_support/notifications/instrumenter.rb |
Class Method Summary
Instance Attribute Summary
- #name readonly
- #payload rw
- #transaction_id readonly
Instance Method Summary
- #allocations
- #cpu_time
-
#duration
Returns the difference in milliseconds between when the execution of the event started and when it ended.
- #end
-
#finish!
Record information at the time this event finishes.
- #gc_time
- #idle_time
-
#start!
Record information at the time this event starts.
- #time
- #now private
-
#now_allocations
private
Likely on JRuby, TruffleRuby.
-
#now_gc
private
See additional method definition at line 220.
- #record Internal use only
Constructor Details
.new(name, start, ending, transaction_id, payload) ⇒ Event
# File 'activesupport/lib/active_support/notifications/instrumenter.rb', line 110
def initialize(name, start, ending, transaction_id, payload) @name = name @payload = payload.dup @time = start ? start.to_f * 1_000.0 : start @transaction_id = transaction_id @end = ending ? ending.to_f * 1_000.0 : ending @cpu_time_start = 0.0 @cpu_time_finish = 0.0 @allocation_count_start = 0 @allocation_count_finish = 0 @gc_time_start = 0 @gc_time_finish = 0 end
Instance Attribute Details
#name (readonly)
[ GitHub ]# File 'activesupport/lib/active_support/notifications/instrumenter.rb', line 107
attr_reader :name, :transaction_id
#payload (rw)
[ GitHub ]# File 'activesupport/lib/active_support/notifications/instrumenter.rb', line 108
attr_accessor :payload
#transaction_id (readonly)
[ GitHub ]# File 'activesupport/lib/active_support/notifications/instrumenter.rb', line 107
attr_reader :name, :transaction_id
Instance Method Details
#allocations
[ GitHub ]# File 'activesupport/lib/active_support/notifications/instrumenter.rb', line 176
def allocations @allocation_count_finish - @allocation_count_start end
#cpu_time
[ GitHub ]# File 'activesupport/lib/active_support/notifications/instrumenter.rb', line 163
def cpu_time @cpu_time_finish - @cpu_time_start end
#duration
Returns the difference in milliseconds between when the execution of the event started and when it ended.
ActiveSupport::Notifications.subscribe('wait') do |event|
@event = event
end
ActiveSupport::Notifications.instrument('wait') do
sleep 1
end
@event.duration # => 1000.138
# File 'activesupport/lib/active_support/notifications/instrumenter.rb', line 198
def duration @end - @time end
#end
[ GitHub ]# File 'activesupport/lib/active_support/notifications/instrumenter.rb', line 128
def end @end / 1000.0 if @end end
#finish!
Record information at the time this event finishes
# File 'activesupport/lib/active_support/notifications/instrumenter.rb', line 154
def finish! @cpu_time_finish = now_cpu @gc_time_finish = now_gc @end = now @allocation_count_finish = now_allocations end
#gc_time
[ GitHub ]# File 'activesupport/lib/active_support/notifications/instrumenter.rb', line 182
def gc_time (@gc_time_finish - @gc_time_start) / 1_000_000.0 end
#idle_time
#now (private)
[ GitHub ]# File 'activesupport/lib/active_support/notifications/instrumenter.rb', line 203
def now Process.clock_gettime(Process::CLOCK_MONOTONIC, :float_millisecond) end
#now_allocations (private)
Likely on JRuby, TruffleRuby
# File 'activesupport/lib/active_support/notifications/instrumenter.rb', line 234
def now_allocations GC.stat(:total_allocated_objects) end
#now_gc (private)
See additional method definition at line 220.
# File 'activesupport/lib/active_support/notifications/instrumenter.rb', line 224
def now_gc GC.total_time end
#record
This method is for internal use only.
[ GitHub ]
#start!
Record information at the time this event starts
# File 'activesupport/lib/active_support/notifications/instrumenter.rb', line 146
def start! @time = now @cpu_time_start = now_cpu @gc_time_start = now_gc @allocation_count_start = now_allocations end
#time
[ GitHub ]# File 'activesupport/lib/active_support/notifications/instrumenter.rb', line 124
def time @time / 1000.0 if @time end