class Sqreen::Graft::Timer
Attributes
size[RW]
tag[R]
tally[RW]
Public Class Methods
new(tag, &block)
click to toggle source
# File lib/sqreen/graft/call.rb, line 105 def initialize(tag, &block) @tag = tag @block = block @tally = 0 @size = 0 end
read()
click to toggle source
# File lib/sqreen/graft/call.rb, line 99 def self.read Process.clock_gettime(Process::CLOCK_MONOTONIC) end
Public Instance Methods
duration()
click to toggle source
# File lib/sqreen/graft/call.rb, line 118 def duration raise(TimerError, 'Timer#duration when running') if @size.odd? @tally end
elapsed()
click to toggle source
# File lib/sqreen/graft/call.rb, line 112 def elapsed raise(TimerError, 'Timer#elapsed when paused') if @size.even? @tally + Timer.read end
ignore() { |self| ... }
click to toggle source
# File lib/sqreen/graft/call.rb, line 124 def ignore raise(TimerError, 'Timer#ignore when paused') if @size.even? @size += 1 @tally += Timer.read yield(self) ensure @size += 1 @tally -= Timer.read end
include_measurements(another_timer)
click to toggle source
# File lib/sqreen/graft/call.rb, line 198 def include_measurements(another_timer) @blips += another_timer.instance_variable_get(:@blips) end
measure(opts = nil) { |self| ... }
click to toggle source
# File lib/sqreen/graft/call.rb, line 135 def measure(opts = nil) raise(TimerError, 'Timer#measure when running') if @size.odd? now = Timer.read ignore = opts[:ignore] if opts if ignore ignore.size += 1 ignore.tally += now end @size += 1 @tally -= now yield(self) ensure now = Timer.read if ignore ignore.size += 1 ignore.tally -= now end @size += 1 @tally += now @block.call(self) if @block end
paused?()
click to toggle source
# File lib/sqreen/graft/call.rb, line 194 def paused? @size.even? end
running?()
click to toggle source
# File lib/sqreen/graft/call.rb, line 190 def running? @size.odd? end
start(at = Timer.read)
click to toggle source
# File lib/sqreen/graft/call.rb, line 164 def start(at = Timer.read) raise(TimerError, 'Timer#start when started') unless @size.even? @size += 1 @tally -= at at end
start_and_end()
click to toggle source
# File lib/sqreen/graft/call.rb, line 202 def start_and_end raise 'Not exactly two measurements recorded' unless size == 2 @blips end
started?()
click to toggle source
# File lib/sqreen/graft/call.rb, line 182 def started? @size != 0 && @size.odd? end
stop(at = Timer.read)
click to toggle source
# File lib/sqreen/graft/call.rb, line 173 def stop(at = Timer.read) raise(TimerError, 'Timer#stop when unstarted') unless @size.odd? @size += 1 @tally += at at end
stopped?()
click to toggle source
# File lib/sqreen/graft/call.rb, line 186 def stopped? @size != 0 && @size.even? end
to_s()
click to toggle source
# File lib/sqreen/graft/call.rb, line 207 def to_s "#{@tag}: time=%.03fus" % (duration * 1_000_000) end