class DDMetrics::Stats

Public Class Methods

new(values) click to toggle source
# File lib/ddmetrics/stats.rb, line 11
def initialize(values)
  @values = values
end

Public Instance Methods

avg() click to toggle source
# File lib/ddmetrics/stats.rb, line 28
def avg
  sum.to_f / count
end
count() click to toggle source
# File lib/ddmetrics/stats.rb, line 19
def count
  @values.size
end
inspect() click to toggle source
# File lib/ddmetrics/stats.rb, line 15
def inspect
  "<#{self.class} count=#{count}>"
end
max() click to toggle source
# File lib/ddmetrics/stats.rb, line 36
def max
  quantile(1.0)
end
min() click to toggle source
# File lib/ddmetrics/stats.rb, line 32
def min
  quantile(0.0)
end
quantile(fraction) click to toggle source
# File lib/ddmetrics/stats.rb, line 40
def quantile(fraction)
  raise EmptyError if @values.empty?

  target = (@values.size - 1) * fraction.to_f
  interp = target % 1.0
  sorted_values[target.floor] * (1.0 - interp) + sorted_values[target.ceil] * interp
end
sum() click to toggle source
# File lib/ddmetrics/stats.rb, line 23
def sum
  raise EmptyError if @values.empty?
  @values.reduce(:+)
end

Private Instance Methods

sorted_values() click to toggle source
# File lib/ddmetrics/stats.rb, line 50
def sorted_values
  @sorted_values ||= @values.sort
end