quicky 0.1.1 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile.lock +2 -2
- data/README.md +37 -0
- data/lib/quicky/results_hash.rb +23 -2
- data/lib/quicky/timer.rb +24 -19
- data/lib/quicky/version.rb +1 -1
- data/quicky.gemspec +1 -1
- data/test/test_basics.rb +11 -1
- metadata +3 -3
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -13,6 +13,11 @@ quicky = Quicky::Timer.new
|
|
13
13
|
quicky.time(:test1) do
|
14
14
|
sleep 2
|
15
15
|
end
|
16
|
+
```
|
17
|
+
|
18
|
+
Call time over and over again and when ready for results:
|
19
|
+
|
20
|
+
```ruby
|
16
21
|
# Print average duration for all :test1 timings
|
17
22
|
p quicky.results(:test1).duration
|
18
23
|
# Print total duration for all :test1 timings
|
@@ -21,6 +26,7 @@ p quicky.results(:test1).total_duration
|
|
21
26
|
p quicky.results(:test1).max_duration
|
22
27
|
# Print shortest duration for all :test1 timings
|
23
28
|
p quicky.results(:test1).min_duration
|
29
|
+
```
|
24
30
|
|
25
31
|
### Time in a loop
|
26
32
|
|
@@ -49,3 +55,34 @@ end
|
|
49
55
|
|
50
56
|
- warmup: X -- will throw out the first X results.
|
51
57
|
|
58
|
+
## Results
|
59
|
+
|
60
|
+
You can get all the results with:
|
61
|
+
|
62
|
+
```ruby
|
63
|
+
results = quicky.results
|
64
|
+
```
|
65
|
+
|
66
|
+
Or a single result:
|
67
|
+
|
68
|
+
```ruby
|
69
|
+
result = quicky.results(:test1)
|
70
|
+
```
|
71
|
+
|
72
|
+
Or turn it into a straight up hash:
|
73
|
+
|
74
|
+
```ruby
|
75
|
+
hash = quicky.results.to_hash
|
76
|
+
```
|
77
|
+
|
78
|
+
And even marshal a hash back into a quicky objects:
|
79
|
+
|
80
|
+
```ruby
|
81
|
+
results = Quicky::ResultsHash.from_hash(hash)
|
82
|
+
```
|
83
|
+
|
84
|
+
Or merge several results hashes together (if you were doing some tests in parallel):
|
85
|
+
|
86
|
+
```ruby
|
87
|
+
results.merge!(other_results)
|
88
|
+
```
|
data/lib/quicky/results_hash.rb
CHANGED
@@ -5,11 +5,32 @@ module Quicky
|
|
5
5
|
# returns results in a straight up hash.
|
6
6
|
def to_hash
|
7
7
|
ret = {}
|
8
|
-
self.each_pair do |k,v|
|
8
|
+
self.each_pair do |k, v|
|
9
9
|
ret[k] = v.to_hash()
|
10
10
|
end
|
11
11
|
ret
|
12
12
|
end
|
13
|
+
|
14
|
+
# if given the same results from to_hash, this will recreate the ResultsHash
|
15
|
+
def self.from_hash(h)
|
16
|
+
rh = ResultsHash.new
|
17
|
+
h.each_pair do |k, v|
|
18
|
+
rh[k] = TimeCollector.from_hash(v)
|
19
|
+
end
|
20
|
+
rh
|
21
|
+
end
|
22
|
+
|
23
|
+
# merges multiple ResultsHash's
|
24
|
+
def merge!(rh)
|
25
|
+
rh.each_pair do |k, v|
|
26
|
+
# v is a TimeCollector
|
27
|
+
if self.has_key?(k)
|
28
|
+
self[k].merge!(v)
|
29
|
+
else
|
30
|
+
self[k] = v
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
13
34
|
end
|
35
|
+
end
|
14
36
|
|
15
|
-
end
|
data/lib/quicky/timer.rb
CHANGED
@@ -56,7 +56,7 @@ module Quicky
|
|
56
56
|
class TimeCollector
|
57
57
|
INT_MAX = ((2 ** (32 - 2)) - 1)
|
58
58
|
|
59
|
-
attr_accessor :name
|
59
|
+
attr_accessor :name, :total_duration, :count, :max_duration, :min_duration
|
60
60
|
|
61
61
|
def initialize(name)
|
62
62
|
@name = name
|
@@ -64,34 +64,24 @@ module Quicky
|
|
64
64
|
@total_duration = 0.0
|
65
65
|
@max_duration = 0.0
|
66
66
|
@min_duration = INT_MAX
|
67
|
+
@count = 0
|
67
68
|
end
|
68
69
|
|
69
70
|
def <<(val)
|
70
71
|
# pull out duration for totals
|
71
72
|
@total_duration += val.duration
|
72
|
-
|
73
|
-
@min_duration = val.duration if val.duration < @min_duration
|
73
|
+
update_max_min(val.duration)
|
74
74
|
@collector << val
|
75
|
+
@count += 1
|
75
76
|
end
|
76
77
|
|
77
|
-
def duration
|
78
|
-
@
|
79
|
-
|
80
|
-
|
81
|
-
def total_duration
|
82
|
-
@total_duration
|
83
|
-
end
|
84
|
-
|
85
|
-
def max_duration
|
86
|
-
@max_duration
|
87
|
-
end
|
88
|
-
|
89
|
-
def min_duration
|
90
|
-
@min_duration
|
78
|
+
def update_max_min(duration)
|
79
|
+
@max_duration = duration if duration > @max_duration
|
80
|
+
@min_duration = duration if duration < @min_duration
|
91
81
|
end
|
92
82
|
|
93
|
-
def
|
94
|
-
@
|
83
|
+
def duration
|
84
|
+
@total_duration / self.count
|
95
85
|
end
|
96
86
|
|
97
87
|
def to_hash
|
@@ -105,6 +95,21 @@ module Quicky
|
|
105
95
|
}
|
106
96
|
end
|
107
97
|
|
98
|
+
def self.from_hash(h)
|
99
|
+
t = TimeCollector.new(h['name'])
|
100
|
+
h.each_pair do |k,v|
|
101
|
+
t.instance_variable_set("@#{k}", v)
|
102
|
+
end
|
103
|
+
t
|
104
|
+
end
|
105
|
+
|
106
|
+
def merge!(tc)
|
107
|
+
self.count += tc.count
|
108
|
+
self.total_duration += tc.total_duration
|
109
|
+
update_max_min(tc.max_duration)
|
110
|
+
update_max_min(tc.min_duration)
|
111
|
+
end
|
112
|
+
|
108
113
|
end
|
109
114
|
|
110
115
|
class TimeResult
|
data/lib/quicky/version.rb
CHANGED
data/quicky.gemspec
CHANGED
@@ -5,7 +5,7 @@ Gem::Specification.new do |gem|
|
|
5
5
|
gem.email = ["treeder@gmail.com"]
|
6
6
|
gem.description = "Rest client wrapper that chooses best installed client."
|
7
7
|
gem.summary = "Rest client wrapper that chooses best installed client."
|
8
|
-
gem.homepage = "https://github.com/
|
8
|
+
gem.homepage = "https://github.com/treeder/quicky"
|
9
9
|
|
10
10
|
gem.files = `git ls-files`.split($\)
|
11
11
|
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
data/test/test_basics.rb
CHANGED
@@ -42,10 +42,20 @@ class TestBasics < TestBase
|
|
42
42
|
assert result.min_duration < 0.55 && result.min_duration > 0.1
|
43
43
|
assert result.max_duration > 0.5 && result.max_duration < 0.7
|
44
44
|
|
45
|
-
|
45
|
+
r1 = quicky.results
|
46
|
+
p r1
|
47
|
+
hash = r1.to_hash
|
46
48
|
p hash
|
47
49
|
assert hash[:test3][:duration] >= 0.5
|
48
50
|
|
51
|
+
r2 = Quicky::ResultsHash.from_hash(hash)
|
52
|
+
p r2
|
53
|
+
assert_equal r1.size, r2.size
|
54
|
+
r1.each_pair do |k, v|
|
55
|
+
# v should be a TimeCollector
|
56
|
+
assert_equal v.count, r2[k].count
|
57
|
+
end
|
58
|
+
|
49
59
|
end
|
50
60
|
|
51
61
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: quicky
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-11-16 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: test-unit
|
@@ -47,7 +47,7 @@ files:
|
|
47
47
|
- quicky.gemspec
|
48
48
|
- test/test_base.rb
|
49
49
|
- test/test_basics.rb
|
50
|
-
homepage: https://github.com/
|
50
|
+
homepage: https://github.com/treeder/quicky
|
51
51
|
licenses: []
|
52
52
|
post_install_message:
|
53
53
|
rdoc_options: []
|