class Benchmark::IPS::Stats::Bootstrap

Attributes

data[R]

Public Class Methods

new(samples, confidence) click to toggle source
# File lib/benchmark/ips/stats/bootstrap.rb, line 9
def initialize(samples, confidence)
  dependencies
  @iterations = 10_000
  @confidence = (confidence / 100.0).to_s
  @data = Kalibera::Data.new({[0] => samples}, [1, samples.size])
  interval = @data.bootstrap_confidence_interval(@iterations, @confidence)
  @median = interval.median
  @error = interval.error
end

Public Instance Methods

central_tendency() click to toggle source
# File lib/benchmark/ips/stats/bootstrap.rb, line 19
def central_tendency
  @median
end
dependencies() click to toggle source
# File lib/benchmark/ips/stats/bootstrap.rb, line 37
def dependencies
  require 'kalibera'
rescue LoadError
  puts
  puts "Can't load the kalibera gem - this is required to use the :bootstrap stats options."
  puts "It's optional, so we don't formally depend on it and it isn't installed along with benchmark-ips."
  puts "You probably want to do something like 'gem install kalibera' to fix this."
  abort
end
error() click to toggle source
# File lib/benchmark/ips/stats/bootstrap.rb, line 23
def error
  @error
end
slowdown(baseline) click to toggle source
# File lib/benchmark/ips/stats/bootstrap.rb, line 27
def slowdown(baseline)
  low, slowdown, high = baseline.data.bootstrap_quotient(@data, @iterations, @confidence)
  error = Timing.mean([slowdown - low, high - slowdown])
  [slowdown, error]
end