34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
# File 'lib/tem/benchmarks/benchmarks.rb', line 34
def do_timing
@tem.flush_buffers
n = 10
loop do
timings = (0...3).map do |i|
t_start = Time.now
n.times do
yield
end
t_delta = Time.now - t_start
end
avg_time = timings.inject { |a,v| a + v } / timings.length
max_diff = timings.map { |t| (t - avg_time).abs }.max
uncertainty = max_diff / avg_time
print "%8d: %3.8fs per run, %3.8fs uncertainty (%2.5f%%)\n" %
[n, avg_time / n, max_diff / n, 100 * uncertainty]
if max_diff / avg_time >= 0.01
n *= 2
next
end
@timing = avg_time / n
break
end
@timing
end
|