module Benchmark::Perf::Stats

Public Class Methods

average(measurements) click to toggle source

Calculate arithemtic average of measurements

@param [Array] measurements

@return [Float]

the average of given measurements

@api public

# File lib/benchmark/perf/stats.rb, line 14
def average(measurements)
  return 0 if measurements.empty?

  measurements.reduce(&:+).to_f / measurements.size
end
stdev(measurements) click to toggle source

Calculate standard deviation

@param [Array] measurements

@api public

# File lib/benchmark/perf/stats.rb, line 44
def stdev(measurements)
  return 0 if measurements.empty?

  Math.sqrt(variance(measurements))
end
variance(measurements) click to toggle source

Calculate variance of measurements

@param [Array] measurements

@return [Float]

@api public

# File lib/benchmark/perf/stats.rb, line 28
def variance(measurements)
  return 0 if measurements.empty?

  avg = average(measurements)
  total = measurements.reduce(0) do |sum, x|
    sum + (x - avg)**2
  end
  total.to_f / measurements.size
end

Private Instance Methods

average(measurements) click to toggle source

Calculate arithemtic average of measurements

@param [Array] measurements

@return [Float]

the average of given measurements

@api public

# File lib/benchmark/perf/stats.rb, line 14
def average(measurements)
  return 0 if measurements.empty?

  measurements.reduce(&:+).to_f / measurements.size
end
stdev(measurements) click to toggle source

Calculate standard deviation

@param [Array] measurements

@api public

# File lib/benchmark/perf/stats.rb, line 44
def stdev(measurements)
  return 0 if measurements.empty?

  Math.sqrt(variance(measurements))
end
variance(measurements) click to toggle source

Calculate variance of measurements

@param [Array] measurements

@return [Float]

@api public

# File lib/benchmark/perf/stats.rb, line 28
def variance(measurements)
  return 0 if measurements.empty?

  avg = average(measurements)
  total = measurements.reduce(0) do |sum, x|
    sum + (x - avg)**2
  end
  total.to_f / measurements.size
end