class Metrics::Instruments::Timer
Constants
- DEFAULT_PERCENTILES
Attributes
duration_unit[R]
rate_unit[R]
units[R]
Public Class Methods
new(options = {})
click to toggle source
# File lib/ruby-metrics/instruments/timer.rb, line 13 def initialize(options = {}) @meter = Meter.new @histogram = ExponentialHistogram.new @duration_unit = options[:duration_unit] || :seconds @rate_unit = options[:rate_unit] || :seconds @units = options[:units] clear end
Public Instance Methods
as_json(*_)
click to toggle source
# File lib/ruby-metrics/instruments/timer.rb, line 98 def as_json(*_) { :count => count, :rates => { :one_minute_rate => one_minute_rate, :five_minute_rate => five_minute_rate, :fifteen_minute_rate => fifteen_minute_rate, :unit => @rate_unit }, :durations => { :min => min, :max => max, :mean => mean, :percentiles => quantiles, :unit => @duration_unit } } end
clear()
click to toggle source
# File lib/ruby-metrics/instruments/timer.rb, line 24 def clear @meter.clear @histogram.clear end
count()
click to toggle source
# File lib/ruby-metrics/instruments/timer.rb, line 42 def count @histogram.count end
fifteen_minute_rate()
click to toggle source
# File lib/ruby-metrics/instruments/timer.rb, line 46 def fifteen_minute_rate @meter.fifteen_minute_rate(@rate_unit) end
five_minute_rate()
click to toggle source
# File lib/ruby-metrics/instruments/timer.rb, line 50 def five_minute_rate @meter.five_minute_rate(@rate_unit) end
max()
click to toggle source
# File lib/ruby-metrics/instruments/timer.rb, line 62 def max scale_duration_to_ns @histogram.max, @duration_unit end
mean()
click to toggle source
# File lib/ruby-metrics/instruments/timer.rb, line 70 def mean scale_duration_to_ns @histogram.mean, @duration_unit end
mean_rate()
click to toggle source
# File lib/ruby-metrics/instruments/timer.rb, line 58 def mean_rate @meter.mean_rate(@rate_unit) end
min()
click to toggle source
# File lib/ruby-metrics/instruments/timer.rb, line 66 def min scale_duration_to_ns @histogram.min, @duration_unit end
one_minute_rate()
click to toggle source
# File lib/ruby-metrics/instruments/timer.rb, line 54 def one_minute_rate @meter.one_minute_rate(@rate_unit) end
quantiles(percentiles = DEFAULT_PERCENTILES)
click to toggle source
# File lib/ruby-metrics/instruments/timer.rb, line 78 def quantiles(percentiles = DEFAULT_PERCENTILES) @histogram.quantiles(percentiles).inject({}) do |result, (k, v)| result[k] = scale_duration_to_ns v, @duration_unit result end end
std_dev()
click to toggle source
# File lib/ruby-metrics/instruments/timer.rb, line 74 def std_dev scale_duration_to_ns @histogram.std_dev, @duration_unit end
time() { || ... }
click to toggle source
# File lib/ruby-metrics/instruments/timer.rb, line 33 def time start_time = Time.now.to_f result = yield time_diff = Time.now.to_f - start_time time_in_ns = convert_to_ns time_diff, :seconds update_timer(time_in_ns) result end
to_json(*_)
click to toggle source
# File lib/ruby-metrics/instruments/timer.rb, line 117 def to_json(*_) as_json.to_json end
update(duration, unit)
click to toggle source
# File lib/ruby-metrics/instruments/timer.rb, line 29 def update(duration, unit) update_timer(convert_to_ns(duration, unit)) end
update_timer(duration)
click to toggle source
# File lib/ruby-metrics/instruments/timer.rb, line 91 def update_timer(duration) if duration >= 0 @histogram.update(duration) @meter.mark end end
values()
click to toggle source
# File lib/ruby-metrics/instruments/timer.rb, line 85 def values @histogram.values.map do |value| scale_duration_to_ns value, @duration_unit end end
Private Instance Methods
scale_duration_to_ns(value, unit)
click to toggle source
# File lib/ruby-metrics/instruments/timer.rb, line 122 def scale_duration_to_ns(value, unit) value.to_f / convert_to_ns(1.0, unit) end