-
Notifications
You must be signed in to change notification settings - Fork 0
/
bencher.rb
45 lines (34 loc) · 960 Bytes
/
bencher.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
class Bencher
@@benchmarks = {}
@@running = {}
def self.bench(key, time)
@@benchmarks[key] = 0 unless @@benchmarks.has_key?(key)
@@benchmarks[key] = @@benchmarks[key] + time
end
def self.start(name)
@@running[name] = Time.now
end
def self.stop(name)
if @@running[name].nil?
raise "Didn't start '#{name}'"
end
bench(name, Time.now - @@running[name])
end
def self.inspect
return "" if @@benchmarks.empty?
result = []
max_length = @@benchmarks.max {|a,b| a.first.length <=> b.first.length }.first.length
# Time sort
#@@benchmarks.sort{|a,b| b.last <=> a.last }.each do |key, value|
# Alphabetical sort
@@benchmarks.sort.each do |key, value|
string = key
0.upto(max_length + 3 - key.length) do
string = string + " "
end
string = string + value.to_s
result << string
end
result.join("\n")
end
end