Class: Metriks::Timer

Inherits:
Object
  • Object
show all
Defined in:
lib/metriks/timer.rb

Direct Known Subclasses

UtilizationTimer

Defined Under Namespace

Classes: Context

Instance Method Summary collapse

Constructor Details

#initialize(histogram = Metriks::Histogram.new_exponentially_decaying) ⇒ Timer

Returns a new instance of Timer.



21
22
23
24
# File 'lib/metriks/timer.rb', line 21

def initialize(histogram = Metriks::Histogram.new_exponentially_decaying)
  @meter     = Metriks::Meter.new
  @histogram = histogram
end

Instance Method Details

#clearObject



26
27
28
29
# File 'lib/metriks/timer.rb', line 26

def clear
  @meter.clear
  @histogram.clear
end

#countObject



57
58
59
# File 'lib/metriks/timer.rb', line 57

def count
  @histogram.count
end

#fifteen_minute_rateObject



69
70
71
# File 'lib/metriks/timer.rb', line 69

def fifteen_minute_rate
  @meter.fifteen_minute_rate
end

#five_minute_rateObject



65
66
67
# File 'lib/metriks/timer.rb', line 65

def five_minute_rate
  @meter.five_minute_rate
end

#maxObject



81
82
83
# File 'lib/metriks/timer.rb', line 81

def max
  @histogram.max
end

#meanObject



85
86
87
# File 'lib/metriks/timer.rb', line 85

def mean
  @histogram.mean
end

#mean_rateObject



73
74
75
# File 'lib/metriks/timer.rb', line 73

def mean_rate
  @meter.mean_rate
end

#minObject



77
78
79
# File 'lib/metriks/timer.rb', line 77

def min
  @histogram.min
end

#one_minute_rateObject



61
62
63
# File 'lib/metriks/timer.rb', line 61

def one_minute_rate
  @meter.one_minute_rate
end

#snapshotObject



53
54
55
# File 'lib/metriks/timer.rb', line 53

def snapshot
  @histogram.snapshot
end

#stddevObject



89
90
91
# File 'lib/metriks/timer.rb', line 89

def stddev
  @histogram.stddev
end

#stopObject



93
94
95
# File 'lib/metriks/timer.rb', line 93

def stop
  @meter.stop
end

#time(callable = nil, &block) ⇒ Object



38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/metriks/timer.rb', line 38

def time(callable = nil, &block)
  callable ||= block
  context = Context.new(self)

  if callable.nil?
    return context
  end

  begin
    return callable.call
  ensure
    context.stop
  end
end

#update(duration) ⇒ Object



31
32
33
34
35
36
# File 'lib/metriks/timer.rb', line 31

def update(duration)
  if duration >= 0
    @meter.mark
    @histogram.update(duration)
  end
end