module Benchmark::Timing
def self.clean_env
def self.clean_env # rbx if GC.respond_to? :run GC.run(true) else GC.start end end
def self.mean(samples)
-
(Float)
- Mean of given samples.
Parameters:
-
samples
(Array
) -- Samples to calculate mean.
def self.mean(samples) sum = samples.inject(0) { |acc, i| acc + i } sum / samples.size end
def self.resample_mean(samples, resample_times=100)
-
(Array)
- Resampled samples.
Parameters:
-
resample_times
(Integer
) -- Resample times, defaults to 100.
def self.resample_mean(samples, resample_times=100) resamples = [] resample_times.times do resample = samples.map { samples[rand(samples.size)] } resamples << Timing.mean(resample) end resamples end
def self.stddev(samples, m=nil)
-
(Float)
- standard deviation of given samples.
Parameters:
-
m
(Float
) -- Optional mean (Expected value). -
samples
(Array
) -- Samples to calculate standard deviation.
def self.stddev(samples, m=nil) Math.sqrt variance(samples, m) end
def self.variance(samples, m=nil)
-
(Float)
- Variance of given samples.
Parameters:
-
m
(Float
) -- Optional mean (Expected value).
def self.variance(samples, m=nil) m ||= mean(samples) total = samples.inject(0) { |acc, i| acc + ((i - m) ** 2) } total / samples.size end