benelux 0.5.4 → 0.5.5
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/CHANGES.txt +4 -1
- data/README.rdoc +20 -5
- data/benelux.gemspec +2 -2
- data/lib/benelux.rb +61 -2
- metadata +5 -5
data/CHANGES.txt
CHANGED
@@ -1,10 +1,13 @@
|
|
1
1
|
BENELUX, CHANGES
|
2
2
|
|
3
|
+
#### 0.5.5 (2010-01-16) ###############################
|
4
|
+
|
5
|
+
* ADDED: Benelux.bm
|
6
|
+
|
3
7
|
#### 0.5.4 (2010-01-13) ###############################
|
4
8
|
|
5
9
|
* CHANGE: Timeline#add_message now supports objects of any type (not just Strings)
|
6
10
|
|
7
|
-
|
8
11
|
#### 0.5.3 (2009-11-16) ###############################
|
9
12
|
|
10
13
|
* FIXED: Process dead threads only once
|
data/README.rdoc
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
= Benelux v0.5
|
2
2
|
|
3
|
-
<b>A mad
|
3
|
+
<b>A mad way to time Ruby codes</b>
|
4
4
|
|
5
5
|
|
6
6
|
== Features
|
@@ -10,14 +10,30 @@
|
|
10
10
|
* Granular statistics
|
11
11
|
* Thread-safe
|
12
12
|
|
13
|
-
|
13
|
+
== Example
|
14
|
+
|
15
|
+
require 'benelux'
|
16
|
+
|
17
|
+
# Similar to Benchmark::Tms with the addition of
|
18
|
+
# standard deviation, mean value, and total, for
|
19
|
+
# each of the times.
|
20
|
+
tms = Benelux.bm(1000000, 5) do
|
21
|
+
rand
|
22
|
+
end
|
23
|
+
|
24
|
+
tms.samples # => 5
|
25
|
+
tms.real # => 0.45
|
26
|
+
tms.real.sd # => 0.04
|
27
|
+
tms.utime # => 0.44
|
28
|
+
tms.utime.sd # => 0.02
|
29
|
+
|
14
30
|
== Installation
|
15
31
|
|
16
32
|
Get it in one of the following ways:
|
17
33
|
|
18
|
-
$ gem install benelux
|
34
|
+
$ gem install benelux --source http://gemcutter.org
|
35
|
+
$ sudo gem install benelux --source http://gemcutter.org
|
19
36
|
$ git clone git://github.com/delano/benelux.git
|
20
|
-
$ gem install delano-benelux --source http://gems.github.com
|
21
37
|
|
22
38
|
|
23
39
|
== More Information
|
@@ -25,7 +41,6 @@ Get it in one of the following ways:
|
|
25
41
|
* Codes[http://github.com/delano/benelux]
|
26
42
|
* RDocs[http://delano.github.com/benelux]
|
27
43
|
|
28
|
-
|
29
44
|
== Credits
|
30
45
|
|
31
46
|
* Delano Mandelbaum (http://solutious.com)
|
data/benelux.gemspec
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
@spec = Gem::Specification.new do |s|
|
2
2
|
s.name = "benelux"
|
3
3
|
s.rubyforge_project = 'benelux'
|
4
|
-
s.version = "0.5.
|
5
|
-
s.summary = "Benelux: A mad
|
4
|
+
s.version = "0.5.5"
|
5
|
+
s.summary = "Benelux: A mad way to time Ruby codes"
|
6
6
|
s.description = s.summary
|
7
7
|
s.author = "Delano Mandelbaum"
|
8
8
|
s.email = "delano@solutious.com"
|
data/lib/benelux.rb
CHANGED
@@ -5,7 +5,7 @@ require 'thwait'
|
|
5
5
|
require 'selectable'
|
6
6
|
|
7
7
|
module Benelux
|
8
|
-
VERSION = "0.5.
|
8
|
+
VERSION = "0.5.5"
|
9
9
|
NOTSUPPORTED = [Class, Object, Kernel]
|
10
10
|
|
11
11
|
class BeneluxError < RuntimeError; end
|
@@ -161,7 +161,66 @@ module Benelux
|
|
161
161
|
def Benelux.disable_debug; @@debug = false; end
|
162
162
|
def Benelux.debug?; @@debug; end
|
163
163
|
|
164
|
-
|
164
|
+
# Similar to Benchmark::Tms with the addition of
|
165
|
+
# standard deviation, mean, and total, for each of
|
166
|
+
# the data times.
|
167
|
+
#
|
168
|
+
# tms = Benelux::Tms.new
|
169
|
+
# tms.real.sd # standard deviation
|
170
|
+
# tms.utime.mean # mean value
|
171
|
+
# tms.total.n # number of data points
|
172
|
+
#
|
173
|
+
# See Benelux::Stats::Calculator
|
174
|
+
#
|
175
|
+
class Tms < Struct.new :label, :real, :cstime, :cutime, :stime, :utime, :total
|
176
|
+
attr_reader :samples
|
177
|
+
# +tms+ is a Benchmark::Tms object
|
178
|
+
def initialize tms=nil
|
179
|
+
@samples = 0
|
180
|
+
members.each_with_index { |n, index|
|
181
|
+
next if n.to_s == 'label'
|
182
|
+
self.send("#{n}=", Stats::Calculator.new)
|
183
|
+
}
|
184
|
+
sample tms unless tms.nil?
|
185
|
+
end
|
186
|
+
def sample(tms)
|
187
|
+
@samples += 1
|
188
|
+
self.label ||= tms.label
|
189
|
+
members.each_with_index { |n, index|
|
190
|
+
next if n.to_s == 'label'
|
191
|
+
self.send(n).sample tms.send(n) || 0
|
192
|
+
}
|
193
|
+
end
|
194
|
+
def to_s
|
195
|
+
total.mean
|
196
|
+
end
|
197
|
+
def inspect
|
198
|
+
fields = members.collect { |f|
|
199
|
+
next unless Stats::Calculator === self.send(f)
|
200
|
+
'%s=%.2f@%.2f' % [f, self.send(f).mean, self.send(f).sd]
|
201
|
+
}.compact
|
202
|
+
args = [self.class.to_s, self.hexoid, samples, fields.join(' ')]
|
203
|
+
'#<%s:%s samples=%d %s>' % args
|
204
|
+
end
|
205
|
+
end
|
206
|
+
|
207
|
+
# Run a benchmark the healthy way: with a warmup run, with
|
208
|
+
# multiple repetitions, and standard deviation.
|
209
|
+
#
|
210
|
+
# * +n+ Number of times to execute +blk+ (one data sample)
|
211
|
+
# * +reps+ Number of data samples to collect
|
212
|
+
# * +blk+ a Ruby block to benchmark
|
213
|
+
#
|
214
|
+
# Returns a Benelux::Tms object
|
215
|
+
def Benelux.bm(n=1, reps=5, &blk)
|
216
|
+
require 'benchmark'
|
217
|
+
n.times &blk
|
218
|
+
tms = Benelux::Tms.new
|
219
|
+
reps.times do |rep|
|
220
|
+
tms.sample Benchmark.measure() {n.times &blk}
|
221
|
+
end
|
222
|
+
tms
|
223
|
+
end
|
165
224
|
end
|
166
225
|
|
167
226
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: benelux
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Delano Mandelbaum
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2010-01-
|
12
|
+
date: 2010-01-16 00:00:00 -05:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -22,7 +22,7 @@ dependencies:
|
|
22
22
|
- !ruby/object:Gem::Version
|
23
23
|
version: "0"
|
24
24
|
version:
|
25
|
-
description: "Benelux: A mad
|
25
|
+
description: "Benelux: A mad way to time Ruby codes"
|
26
26
|
email: delano@solutious.com
|
27
27
|
executables: []
|
28
28
|
|
@@ -68,7 +68,7 @@ post_install_message:
|
|
68
68
|
rdoc_options:
|
69
69
|
- --line-numbers
|
70
70
|
- --title
|
71
|
-
- "Benelux: A mad
|
71
|
+
- "Benelux: A mad way to time Ruby codes"
|
72
72
|
- --main
|
73
73
|
- README.rdoc
|
74
74
|
require_paths:
|
@@ -91,6 +91,6 @@ rubyforge_project: benelux
|
|
91
91
|
rubygems_version: 1.3.5
|
92
92
|
signing_key:
|
93
93
|
specification_version: 3
|
94
|
-
summary: "Benelux: A mad
|
94
|
+
summary: "Benelux: A mad way to time Ruby codes"
|
95
95
|
test_files: []
|
96
96
|
|