module Benchmark::Timing
Perform caclulations on Timing results.
Public Class Methods
clean_env()
click to toggle source
Recycle used objects by starting Garbage Collector.
# File lib/benchmark/timing.rb, line 47 def self.clean_env # rbx if GC.respond_to? :run GC.run(true) else GC.start end end
mean(samples)
click to toggle source
Calculate (arithmetic) mean of given samples. @param [Array] samples Samples to calculate mean. @return [Float] Mean of given samples.
# File lib/benchmark/timing.rb, line 8 def self.mean(samples) sum = samples.inject(0) { |acc, i| acc + i } sum / samples.size end
resample_mean(samples, resample_times=100)
click to toggle source
Resample mean of given samples. @param [Integer] resample_times Resample times, defaults to 100. @return [Array] Resampled samples.
# File lib/benchmark/timing.rb, line 35 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
stddev(samples, m=nil)
click to toggle source
Calculate standard deviation of given samples. @param [Array] samples Samples to calculate standard deviation. @param [Float] m Optional mean (Expected value). @return [Float] standard deviation of given samples.
# File lib/benchmark/timing.rb, line 28 def self.stddev(samples, m=nil) Math.sqrt variance(samples, m) end
variance(samples, m=nil)
click to toggle source
Calculate variance of given samples. @param [Float] m Optional mean (Expected value). @return [Float] Variance of given samples.
# File lib/benchmark/timing.rb, line 16 def self.variance(samples, m=nil) m ||= mean(samples) total = samples.inject(0) { |acc, i| acc + ((i - m) ** 2) } total / samples.size end