Module: Benchmark::Timing
- Extended by:
- FFI::Library
- Defined in:
- lib/benchmark/timing.rb
Defined Under Namespace
Classes: TimeVal
Class Method Summary collapse
- .clean_env ⇒ Object
- .mean(samples) ⇒ Object
- .resample_mean(samples, resample_times = 100) ⇒ Object
- .resolution ⇒ Object
- .stddev(samples, m = nil) ⇒ Object
- .variance(samples, m = nil) ⇒ Object
Class Method Details
.clean_env ⇒ Object
128 129 130 131 132 133 134 135 |
# File 'lib/benchmark/timing.rb', line 128 def self.clean_env # rbx if GC.respond_to? :run GC.run(true) else GC.start end end |
.mean(samples) ⇒ Object
100 101 102 103 |
# File 'lib/benchmark/timing.rb', line 100 def self.mean(samples) sum = samples.inject(0) { |acc, i| acc + i } sum / samples.size end |
.resample_mean(samples, resample_times = 100) ⇒ Object
117 118 119 120 121 122 123 124 125 126 |
# File 'lib/benchmark/timing.rb', line 117 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 |
.resolution ⇒ Object
79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 |
# File 'lib/benchmark/timing.rb', line 79 def self.resolution samples = [] t1 = TimeVal.new t2 = TimeVal.new 30.times do t1.update! while true t2.update! break if t2 != t1 end samples << t1.diff(t2) end sum = samples.inject(0) { |acc, i| acc + i } sum / 30 end |
.stddev(samples, m = nil) ⇒ Object
113 114 115 |
# File 'lib/benchmark/timing.rb', line 113 def self.stddev(samples, m=nil) Math.sqrt variance(samples, m) end |
.variance(samples, m = nil) ⇒ Object
105 106 107 108 109 110 111 |
# File 'lib/benchmark/timing.rb', line 105 def self.variance(samples, m=nil) m ||= mean(samples) total = samples.inject(0) { |acc, i| acc + ((i - m) ** 2) } total / samples.size end |