benchmark-ips 2.3.0 → 2.10.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/History.md +223 -0
- data/LICENSE +20 -0
- data/README.md +106 -29
- data/examples/advanced.rb +20 -0
- data/examples/hold.rb +41 -0
- data/examples/save.rb +50 -0
- data/examples/simple.rb +47 -0
- data/lib/benchmark/compare.rb +59 -23
- data/lib/benchmark/ips/job/entry.rb +95 -0
- data/lib/benchmark/ips/job/noop_report.rb +27 -0
- data/lib/benchmark/ips/job/stdout_report.rb +64 -0
- data/lib/benchmark/ips/job.rb +211 -150
- data/lib/benchmark/ips/noop_suite.rb +25 -0
- data/lib/benchmark/ips/report.rb +46 -27
- data/lib/benchmark/ips/share.rb +50 -0
- data/lib/benchmark/ips/stats/bootstrap.rb +58 -0
- data/lib/benchmark/ips/stats/sd.rb +45 -0
- data/lib/benchmark/ips/stats/stats_metric.rb +21 -0
- data/lib/benchmark/ips.rb +91 -24
- data/lib/benchmark/timing.rb +39 -16
- metadata +24 -31
- data/.autotest +0 -23
- data/.gemtest +0 -0
- data/History.txt +0 -87
- data/Manifest.txt +0 -11
- data/Rakefile +0 -26
- data/test/test_benchmark_ips.rb +0 -161
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: benchmark-ips
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.10.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Evan Phoenix
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-01-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: minitest
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '5.
|
19
|
+
version: '5.4'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '5.
|
26
|
+
version: '5.4'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rdoc
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -38,47 +38,41 @@ dependencies:
|
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '4.0'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: hoe
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - "~>"
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '3.13'
|
48
|
-
type: :development
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - "~>"
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '3.13'
|
55
41
|
description: A iterations per second enhancement to Benchmark.
|
56
42
|
email:
|
57
43
|
- evan@phx.io
|
58
44
|
executables: []
|
59
45
|
extensions: []
|
60
46
|
extra_rdoc_files:
|
61
|
-
- History.
|
62
|
-
-
|
47
|
+
- History.md
|
48
|
+
- LICENSE
|
63
49
|
- README.md
|
64
50
|
files:
|
65
|
-
-
|
66
|
-
-
|
67
|
-
- History.txt
|
68
|
-
- Manifest.txt
|
51
|
+
- History.md
|
52
|
+
- LICENSE
|
69
53
|
- README.md
|
70
|
-
-
|
54
|
+
- examples/advanced.rb
|
55
|
+
- examples/hold.rb
|
56
|
+
- examples/save.rb
|
57
|
+
- examples/simple.rb
|
71
58
|
- lib/benchmark/compare.rb
|
72
59
|
- lib/benchmark/ips.rb
|
73
60
|
- lib/benchmark/ips/job.rb
|
61
|
+
- lib/benchmark/ips/job/entry.rb
|
62
|
+
- lib/benchmark/ips/job/noop_report.rb
|
63
|
+
- lib/benchmark/ips/job/stdout_report.rb
|
64
|
+
- lib/benchmark/ips/noop_suite.rb
|
74
65
|
- lib/benchmark/ips/report.rb
|
66
|
+
- lib/benchmark/ips/share.rb
|
67
|
+
- lib/benchmark/ips/stats/bootstrap.rb
|
68
|
+
- lib/benchmark/ips/stats/sd.rb
|
69
|
+
- lib/benchmark/ips/stats/stats_metric.rb
|
75
70
|
- lib/benchmark/timing.rb
|
76
|
-
- test/test_benchmark_ips.rb
|
77
71
|
homepage: https://github.com/evanphx/benchmark-ips
|
78
72
|
licenses:
|
79
73
|
- MIT
|
80
74
|
metadata: {}
|
81
|
-
post_install_message:
|
75
|
+
post_install_message:
|
82
76
|
rdoc_options:
|
83
77
|
- "--main"
|
84
78
|
- README.md
|
@@ -95,9 +89,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
95
89
|
- !ruby/object:Gem::Version
|
96
90
|
version: '0'
|
97
91
|
requirements: []
|
98
|
-
|
99
|
-
|
100
|
-
signing_key:
|
92
|
+
rubygems_version: 3.2.26
|
93
|
+
signing_key:
|
101
94
|
specification_version: 4
|
102
95
|
summary: A iterations per second enhancement to Benchmark.
|
103
96
|
test_files: []
|
data/.autotest
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
# -*- ruby -*-
|
2
|
-
|
3
|
-
require 'autotest/restart'
|
4
|
-
|
5
|
-
# Autotest.add_hook :initialize do |at|
|
6
|
-
# at.extra_files << "../some/external/dependency.rb"
|
7
|
-
#
|
8
|
-
# at.libs << ":../some/external"
|
9
|
-
#
|
10
|
-
# at.add_exception 'vendor'
|
11
|
-
#
|
12
|
-
# at.add_mapping(/dependency.rb/) do |f, _|
|
13
|
-
# at.files_matching(/test_.*rb$/)
|
14
|
-
# end
|
15
|
-
#
|
16
|
-
# %w(TestA TestB).each do |klass|
|
17
|
-
# at.extra_class_map[klass] = "test/test_misc.rb"
|
18
|
-
# end
|
19
|
-
# end
|
20
|
-
|
21
|
-
# Autotest.add_hook :run_command do |at|
|
22
|
-
# system "rake build"
|
23
|
-
# end
|
data/.gemtest
DELETED
File without changes
|
data/History.txt
DELETED
@@ -1,87 +0,0 @@
|
|
1
|
-
=== 2.3.0 / 2015-07-20
|
2
|
-
|
3
|
-
* 2 minor features:
|
4
|
-
* Support keyword arguments
|
5
|
-
* Allow any datatype for labels (use #to_s conversion)
|
6
|
-
|
7
|
-
* 1 doc/test changes:
|
8
|
-
* Newer Travis for 1.8.7, ree, and 2.2.2
|
9
|
-
|
10
|
-
* 3 PRs merged:
|
11
|
-
* Merge pull request #41 from kbrock/kwargs-support
|
12
|
-
* Merge pull request #42 from kbrock/newer_travis
|
13
|
-
* Merge pull request #43 from kbrock/non_to_s_labels
|
14
|
-
|
15
|
-
=== 2.2.0 / 2015-05-09
|
16
|
-
|
17
|
-
* 1 minor features:
|
18
|
-
* Fix quiet mode
|
19
|
-
* Allow passing a custom suite via config
|
20
|
-
* Silent a job if a suite was passed and is quiet
|
21
|
-
* Export report to json file.
|
22
|
-
* Accept symbol as report's argument.
|
23
|
-
|
24
|
-
* 2 doc fixes:
|
25
|
-
* Squish duplicate `to` in README
|
26
|
-
* Update copyright to 2015. [ci skip]
|
27
|
-
|
28
|
-
* 9 PRs merged:
|
29
|
-
* Merge pull request #37 from splattael/patch-1
|
30
|
-
* Merge pull request #36 from kirs/quiet-mode
|
31
|
-
* Merge pull request #35 from JuanitoFatas/doc/suite
|
32
|
-
* Merge pull request #34 from splattael/config-suite
|
33
|
-
* Merge pull request #33 from splattael/suite-quiet
|
34
|
-
* Merge pull request #32 from O-I/remove-gemfile-lock
|
35
|
-
* Merge pull request #31 from JuanitoFatas/doc/bump-copyright-year
|
36
|
-
* Merge pull request #29 from JuanitoFatas/feature/json-export
|
37
|
-
* Merge pull request #26 from JuanitoFatas/feature/takes-symbol-as-report-parameter
|
38
|
-
|
39
|
-
=== 2.1.1 / 2015-01-12
|
40
|
-
|
41
|
-
* 1 minor fix:
|
42
|
-
* Don't send label through printf so that % work directly
|
43
|
-
|
44
|
-
* 1 documenation changes:
|
45
|
-
* Use HEREDOC and wrap at 80 chars for example result description
|
46
|
-
|
47
|
-
* 1 usage fix:
|
48
|
-
* Add gemspec for use via bundler git
|
49
|
-
|
50
|
-
* 1 PR merged:
|
51
|
-
* Merge pull request #24 from zzak/simple-format-result-description
|
52
|
-
|
53
|
-
=== 2.1.0 / 2014-11-10
|
54
|
-
|
55
|
-
* Documentation changes:
|
56
|
-
* Many documentation fixes by Juanito Fatas!
|
57
|
-
* Minor readme fix by Will Leinweber
|
58
|
-
|
59
|
-
* 2 minor features:
|
60
|
-
* Displaying the total runtime for a job is suppressed unless interesting
|
61
|
-
* Formatting of large values improved (human vs raw mode)
|
62
|
-
* Contributed by Charles Oliver Nutter
|
63
|
-
|
64
|
-
=== 2.0.0 / 2014-06-18
|
65
|
-
|
66
|
-
* The 'Davy Stevenson' release!
|
67
|
-
* Codename: Springtime Hummingbird Dance
|
68
|
-
|
69
|
-
* Big API refactoring so the internal bits are easier to use
|
70
|
-
* Bump to 2.0 because return types changed to make the API better
|
71
|
-
|
72
|
-
* Contributors added:
|
73
|
-
* Davy Stevenson
|
74
|
-
* Juanito Fatas
|
75
|
-
* Benoit Daloze
|
76
|
-
* Matias
|
77
|
-
* Tony Arcieri
|
78
|
-
* Vipul A M
|
79
|
-
* Zachary Scott
|
80
|
-
* schneems (Richard Schneeman)
|
81
|
-
|
82
|
-
=== 1.0.0 / 2012-03-23
|
83
|
-
|
84
|
-
* 1 major enhancement
|
85
|
-
|
86
|
-
* Birthday!
|
87
|
-
|
data/Manifest.txt
DELETED
data/Rakefile
DELETED
@@ -1,26 +0,0 @@
|
|
1
|
-
# -*- ruby -*-
|
2
|
-
|
3
|
-
require 'rubygems'
|
4
|
-
require 'hoe'
|
5
|
-
|
6
|
-
Hoe.plugin :minitest
|
7
|
-
Hoe.plugin :git
|
8
|
-
|
9
|
-
hoe = Hoe.spec 'benchmark-ips' do
|
10
|
-
developer('Evan Phoenix', 'evan@phx.io')
|
11
|
-
|
12
|
-
self.readme_file = 'README.md'
|
13
|
-
|
14
|
-
license "MIT"
|
15
|
-
end
|
16
|
-
|
17
|
-
file "#{hoe.spec.name}.gemspec" => ['Rakefile', "lib/benchmark/ips.rb"] do |t|
|
18
|
-
puts "Generating #{t.name}"
|
19
|
-
File.open(t.name, 'wb') { |f| f.write hoe.spec.to_ruby }
|
20
|
-
end
|
21
|
-
|
22
|
-
desc "Generate or update the standalone gemspec file for the project"
|
23
|
-
task :gemspec => ["#{hoe.spec.name}.gemspec"]
|
24
|
-
|
25
|
-
|
26
|
-
# vim: syntax=ruby
|
data/test/test_benchmark_ips.rb
DELETED
@@ -1,161 +0,0 @@
|
|
1
|
-
require "minitest/autorun"
|
2
|
-
require "benchmark/ips"
|
3
|
-
require "stringio"
|
4
|
-
|
5
|
-
class TestBenchmarkIPS < Minitest::Test
|
6
|
-
def setup
|
7
|
-
@old_stdout = $stdout
|
8
|
-
$stdout = StringIO.new
|
9
|
-
end
|
10
|
-
|
11
|
-
def teardown
|
12
|
-
$stdout = @old_stdout
|
13
|
-
end
|
14
|
-
|
15
|
-
def test_kwargs
|
16
|
-
Benchmark.ips(:time => 1, :warmup => 1, :quiet => false) do |x|
|
17
|
-
x.report("sleep 0.25") { sleep(0.25) }
|
18
|
-
end
|
19
|
-
|
20
|
-
assert $stdout.string.size > 0
|
21
|
-
end
|
22
|
-
|
23
|
-
def test_output
|
24
|
-
Benchmark.ips(1) do |x|
|
25
|
-
x.report("operation") { 100 * 100 }
|
26
|
-
end
|
27
|
-
|
28
|
-
assert $stdout.string.size > 0
|
29
|
-
end
|
30
|
-
|
31
|
-
def test_quiet
|
32
|
-
Benchmark.ips(1, nil, true) do |x|
|
33
|
-
x.report("operation") { 100 * 100 }
|
34
|
-
end
|
35
|
-
|
36
|
-
assert $stdout.string.size.zero?
|
37
|
-
|
38
|
-
Benchmark.ips(:quiet => true) do |x|
|
39
|
-
x.report("operation") { 100 * 100 }
|
40
|
-
end
|
41
|
-
|
42
|
-
assert $stdout.string.size.zero?
|
43
|
-
end
|
44
|
-
|
45
|
-
def test_ips
|
46
|
-
report = Benchmark.ips do |x|
|
47
|
-
x.config(:time => 1, :warmup => 1)
|
48
|
-
x.report("sleep 0.25") { sleep(0.25) }
|
49
|
-
x.report("sleep 0.05") { sleep(0.05) }
|
50
|
-
x.compare!
|
51
|
-
end
|
52
|
-
|
53
|
-
rep1 = report.entries[0]
|
54
|
-
rep2 = report.entries[1]
|
55
|
-
|
56
|
-
assert_equal "sleep 0.25", rep1.label
|
57
|
-
assert_equal 4, rep1.iterations
|
58
|
-
assert_in_delta 4.0, rep1.ips, 0.2
|
59
|
-
|
60
|
-
assert_equal "sleep 0.05", rep2.label
|
61
|
-
assert_in_delta 20.0, rep2.iterations.to_f, 1.0
|
62
|
-
assert_in_delta 20.0, rep2.ips, 1.0
|
63
|
-
end
|
64
|
-
|
65
|
-
def test_ips_alternate_config
|
66
|
-
report = Benchmark.ips do |x|
|
67
|
-
x.time = 1
|
68
|
-
x.warmup = 1
|
69
|
-
x.report("sleep 0.25") { sleep(0.25) }
|
70
|
-
end
|
71
|
-
|
72
|
-
rep = report.entries.first
|
73
|
-
|
74
|
-
assert_equal "sleep 0.25", rep.label
|
75
|
-
assert_equal 4, rep.iterations
|
76
|
-
assert_in_delta 4.0, rep.ips, 0.2
|
77
|
-
end
|
78
|
-
|
79
|
-
def test_ips_old_config
|
80
|
-
report = Benchmark.ips(1,1) do |x|
|
81
|
-
x.report("sleep 0.25") { sleep(0.25) }
|
82
|
-
end
|
83
|
-
|
84
|
-
rep = report.entries.first
|
85
|
-
|
86
|
-
assert_equal "sleep 0.25", rep.label
|
87
|
-
assert_equal 4, rep.iterations
|
88
|
-
assert_in_delta 4.0, rep.ips, 0.2
|
89
|
-
end
|
90
|
-
|
91
|
-
def test_ips_config_suite
|
92
|
-
suite = Struct.new(:calls) do
|
93
|
-
def method_missing(method, *args)
|
94
|
-
calls << method
|
95
|
-
end
|
96
|
-
end.new([])
|
97
|
-
|
98
|
-
Benchmark.ips(0.1, 0.1) do |x|
|
99
|
-
x.config(:suite => suite)
|
100
|
-
x.report("job") {}
|
101
|
-
end
|
102
|
-
|
103
|
-
assert_equal [:warming, :warmup_stats, :running, :add_report], suite.calls
|
104
|
-
end
|
105
|
-
|
106
|
-
def test_ips_defaults
|
107
|
-
report = Benchmark.ips do |x|
|
108
|
-
x.report("sleep 0.25") { sleep(0.25) }
|
109
|
-
end
|
110
|
-
|
111
|
-
rep = report.entries.first
|
112
|
-
|
113
|
-
assert_equal "sleep 0.25", rep.label
|
114
|
-
assert_equal 4*5, rep.iterations
|
115
|
-
assert_in_delta 4.0, rep.ips, 0.2
|
116
|
-
end
|
117
|
-
|
118
|
-
def test_ips_report_using_symbol
|
119
|
-
report = Benchmark.ips do |x|
|
120
|
-
x.report(:sleep_a_quarter_second) { sleep(0.25) }
|
121
|
-
end
|
122
|
-
|
123
|
-
rep = report.entries.first
|
124
|
-
|
125
|
-
assert_equal :sleep_a_quarter_second, rep.label
|
126
|
-
assert_equal 4*5, rep.iterations
|
127
|
-
assert_in_delta 4.0, rep.ips, 0.2
|
128
|
-
end
|
129
|
-
|
130
|
-
def test_ips_default_data
|
131
|
-
report = Benchmark.ips do |x|
|
132
|
-
x.report("sleep 0.25") { sleep(0.25) }
|
133
|
-
end
|
134
|
-
|
135
|
-
all_data = report.data
|
136
|
-
|
137
|
-
assert all_data
|
138
|
-
assert_equal "sleep 0.25", all_data[0][:name]
|
139
|
-
assert all_data[0][:ips]
|
140
|
-
assert all_data[0][:stddev]
|
141
|
-
end
|
142
|
-
|
143
|
-
def test_json_output
|
144
|
-
json_file = Tempfile.new("data.json")
|
145
|
-
|
146
|
-
Benchmark.ips do |x|
|
147
|
-
x.report("sleep 0.25") { sleep(0.25) }
|
148
|
-
x.json! json_file.path
|
149
|
-
end
|
150
|
-
|
151
|
-
json_data = json_file.read
|
152
|
-
assert json_data
|
153
|
-
|
154
|
-
data = JSON.parse json_data
|
155
|
-
assert data
|
156
|
-
assert_equal 1, data.size
|
157
|
-
assert_equal "sleep 0.25", data[0]["name"]
|
158
|
-
assert data[0]["ips"]
|
159
|
-
assert data[0]["stddev"]
|
160
|
-
end
|
161
|
-
end
|