benchmark-bigo 0.0.1 → 0.1.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.
- checksums.yaml +4 -4
- data/README.md +31 -21
- data/lib/benchmark/bigo.rb +0 -2
- data/lib/benchmark/bigo/job.rb +3 -3
- data/lib/benchmark/bigo/{chart.erb → templates/chart.erb} +0 -0
- data/lib/benchmark/bigo/version.rb +15 -0
- data/test/benchmark/test_bigo.rb +151 -3
- metadata +21 -32
- data/.gemtest +0 -0
- data/History.txt +0 -6
- data/Manifest.txt +0 -8
- data/Rakefile +0 -20
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ddf502a4bf2a5eabc6ec0127d22f1ab16ee69eca
|
4
|
+
data.tar.gz: 43b1ce1e054c451c63a0d9597d73461d4b64be15
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6c73e84f56907153c5ff2ec84ecf4da9942431ed477a2408504b0d96e2c5d0be2c3aee8638a117fa5c5da29a76b4c4b150f2221b5362520b66d296201dc19fce
|
7
|
+
data.tar.gz: e7bbe74394cd62b596a51bc2002abe776f36c789ffb7b4a941dc88fb3e8c2fd2a4339dcc008c281e12264385b547fcfd91fd2d4c32a8e19d00405667eec57ea6
|
data/README.md
CHANGED
@@ -2,20 +2,28 @@
|
|
2
2
|
|
3
3
|
# benchmark-bigo
|
4
4
|
|
5
|
-
|
5
|
+
Benchmark objects to help calculate Big O behavior
|
6
6
|
|
7
|
-
##
|
7
|
+
## Installation
|
8
8
|
|
9
|
-
|
9
|
+
In your application's Gemfile:
|
10
|
+
|
11
|
+
```ruby
|
12
|
+
gem 'benchmark-bigo'
|
13
|
+
```
|
10
14
|
|
11
|
-
|
15
|
+
Or install it manually:
|
16
|
+
|
17
|
+
```sh
|
18
|
+
$ gem install benchmark-bigo
|
19
|
+
```
|
20
|
+
|
21
|
+
## Usage
|
12
22
|
|
13
23
|
```ruby
|
14
24
|
require 'benchmark/bigo'
|
15
25
|
|
16
26
|
report = Benchmark.bigo do |x|
|
17
|
-
|
18
|
-
|
19
27
|
# increments is the total number of data points to collect
|
20
28
|
x.increments = 6
|
21
29
|
|
@@ -23,8 +31,11 @@ report = Benchmark.bigo do |x|
|
|
23
31
|
# example of an Array generator
|
24
32
|
x.generator {|size| (0...size).to_a.shuffle }
|
25
33
|
|
34
|
+
# or you can use the built in array generator
|
35
|
+
# x.generate :array
|
36
|
+
|
26
37
|
# specifies how the size of the object should grow
|
27
|
-
# options: linear,
|
38
|
+
# options: linear, exponential
|
28
39
|
#
|
29
40
|
# specifies that arrays should grow linearly by 1000
|
30
41
|
x.linear 1000
|
@@ -44,28 +55,27 @@ report = Benchmark.bigo do |x|
|
|
44
55
|
# for each report, create a comparison chart showing the report
|
45
56
|
# and scaled series for O(log n), O(n), O(n log n), and O(n squared)
|
46
57
|
x.compare!
|
47
|
-
|
48
58
|
end
|
49
59
|
```
|
50
60
|
|
51
|
-
##
|
52
|
-
|
53
|
-
* benchmark-ips (http://github.com/evanphx/benchmark-ips)
|
54
|
-
|
55
|
-
## INSTALL:
|
56
|
-
|
57
|
-
$ gem install benchmark-bigo
|
61
|
+
## Contributing
|
58
62
|
|
59
|
-
|
63
|
+
After checking out the source, run the tests:
|
60
64
|
|
61
|
-
|
65
|
+
```
|
66
|
+
$ git clone git@github.com:davy/benchmark-bigo.git
|
67
|
+
$ cd benchmark-bigo
|
68
|
+
$ bundle install
|
69
|
+
$ bundle exec rake test
|
70
|
+
```
|
62
71
|
|
63
|
-
|
72
|
+
You can also generate RDoc:
|
64
73
|
|
65
|
-
|
66
|
-
|
74
|
+
```
|
75
|
+
$ bundle exec rdoc --main README.md
|
76
|
+
```
|
67
77
|
|
68
|
-
##
|
78
|
+
## License
|
69
79
|
|
70
80
|
(The MIT License)
|
71
81
|
|
data/lib/benchmark/bigo.rb
CHANGED
data/lib/benchmark/bigo/job.rb
CHANGED
@@ -125,8 +125,8 @@ module Benchmark
|
|
125
125
|
@logscale = false
|
126
126
|
end
|
127
127
|
|
128
|
-
#
|
129
|
-
def
|
128
|
+
# exponential incrementer
|
129
|
+
def exponential base=10
|
130
130
|
@incrementer = Proc.new {|i| base ** (i-1) }
|
131
131
|
@full_report.logscale!
|
132
132
|
@logscale = true
|
@@ -190,7 +190,7 @@ module Benchmark
|
|
190
190
|
end
|
191
191
|
end
|
192
192
|
|
193
|
-
template_file = File.join File.dirname(__FILE__), 'chart.erb'
|
193
|
+
template_file = File.join File.dirname(__FILE__), 'templates/chart.erb'
|
194
194
|
template = ERB.new(File.read(template_file))
|
195
195
|
|
196
196
|
File.open @chart, 'w' do |f|
|
File without changes
|
data/test/benchmark/test_bigo.rb
CHANGED
@@ -1,8 +1,156 @@
|
|
1
1
|
require "minitest/autorun"
|
2
2
|
require "benchmark/bigo"
|
3
3
|
|
4
|
-
class
|
5
|
-
def
|
6
|
-
|
4
|
+
class TestBenchmarkBigo < MiniTest::Test
|
5
|
+
def setup
|
6
|
+
@old_stdout = $stdout
|
7
|
+
$stdout = StringIO.new
|
8
|
+
end
|
9
|
+
|
10
|
+
def teardown
|
11
|
+
$stdout = @old_stdout
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_bigo
|
15
|
+
#skip('pass')
|
16
|
+
|
17
|
+
report = Benchmark.bigo do |x|
|
18
|
+
x.config(:time => 1, :warmup => 1, :increments => 2)
|
19
|
+
x.generate :array
|
20
|
+
|
21
|
+
x.report("#at") {|array, size| array.at rand(size) }
|
22
|
+
x.report("#index") {|array, size| array.index rand(size) }
|
23
|
+
x.report("sleep") { |a,b| sleep(0.25) }
|
24
|
+
end
|
25
|
+
|
26
|
+
assert_equal 3, report.entries.length
|
27
|
+
|
28
|
+
assert report.entries.keys.include?("#at")
|
29
|
+
assert report.entries.keys.include?("#index")
|
30
|
+
assert report.entries.keys.include?("sleep")
|
31
|
+
|
32
|
+
at_rep = report.entries["#at"]
|
33
|
+
index_rep = report.entries["#index"]
|
34
|
+
sleep_rep = report.entries["sleep"]
|
35
|
+
|
36
|
+
assert_equal 2, at_rep.size
|
37
|
+
assert_equal 2, index_rep.size
|
38
|
+
assert_equal 2, sleep_rep.size
|
39
|
+
|
40
|
+
assert_equal "#at 100", at_rep[0].label
|
41
|
+
assert_equal "#at 200", at_rep[1].label
|
42
|
+
|
43
|
+
assert_equal "#index 100", index_rep[0].label
|
44
|
+
assert_equal "#index 200", index_rep[1].label
|
45
|
+
|
46
|
+
assert_equal "sleep 100", sleep_rep[0].label
|
47
|
+
assert_equal "sleep 200", sleep_rep[1].label
|
48
|
+
|
49
|
+
assert_equal 4, sleep_rep[0].iterations
|
50
|
+
assert_in_delta 4.0, sleep_rep[0].ips, 0.2
|
51
|
+
|
52
|
+
end
|
53
|
+
|
54
|
+
def test_bigo_alternate_config
|
55
|
+
#skip('pass')
|
56
|
+
report = Benchmark.bigo do |x|
|
57
|
+
x.time = 1
|
58
|
+
x.warmup = 1
|
59
|
+
x.increments = 2
|
60
|
+
x.generate(:array)
|
61
|
+
x.report("sleep") { |a,b| sleep(0.25) }
|
62
|
+
end
|
63
|
+
|
64
|
+
rep = report.entries["sleep"]
|
65
|
+
assert_equal 2, rep.size
|
66
|
+
|
67
|
+
assert_equal "sleep 100", rep[0].label
|
68
|
+
assert_equal 4, rep[0].iterations
|
69
|
+
assert_in_delta 4.0, rep[0].ips, 0.2
|
70
|
+
end
|
71
|
+
|
72
|
+
def test_bigo_defaults
|
73
|
+
#skip('pass')
|
74
|
+
report = Benchmark.bigo do |x|
|
75
|
+
x.config(:time => 1, :warmup => 1)
|
76
|
+
x.generate :array
|
77
|
+
x.report("sleep") { |a,b| sleep(0.25) }
|
78
|
+
end
|
79
|
+
|
80
|
+
assert_equal 1, report.entries.keys.length
|
81
|
+
rep = report.entries["sleep"]
|
82
|
+
|
83
|
+
assert_equal 5, rep.size
|
84
|
+
|
85
|
+
assert_equal "sleep 100", rep[0].label
|
86
|
+
assert_equal "sleep 200", rep[1].label
|
87
|
+
assert_equal "sleep 300", rep[2].label
|
88
|
+
assert_equal "sleep 400", rep[3].label
|
89
|
+
assert_equal "sleep 500", rep[4].label
|
90
|
+
|
91
|
+
assert_equal 4, rep[0].iterations
|
92
|
+
assert_in_delta 4.0, rep[0].ips, 0.2
|
93
|
+
end
|
94
|
+
|
95
|
+
def test_bigo_exponential
|
96
|
+
#skip('pass')
|
97
|
+
report = Benchmark.bigo do |x|
|
98
|
+
x.config(:time => 1, :warmup => 1, :increments => 2)
|
99
|
+
x.generate :array
|
100
|
+
x.exponential
|
101
|
+
x.report("sleep") { |a,b| sleep(0.25) }
|
102
|
+
end
|
103
|
+
|
104
|
+
rep = report.entries["sleep"]
|
105
|
+
|
106
|
+
assert_equal "sleep 1", rep[0].label
|
107
|
+
assert_equal "sleep 10", rep[1].label
|
108
|
+
assert_equal 4, rep[0].iterations
|
109
|
+
assert_in_delta 4.0, rep[0].ips, 0.2
|
110
|
+
end
|
111
|
+
|
112
|
+
def test_bigo_increments_config
|
113
|
+
#skip('pass')
|
114
|
+
report = Benchmark.bigo do |x|
|
115
|
+
x.config(:time => 1, :warmup => 1, :increments => 3)
|
116
|
+
x.generate :array
|
117
|
+
|
118
|
+
x.report("#at") {|array, size| array.at rand(size) }
|
119
|
+
end
|
120
|
+
|
121
|
+
assert_equal 1, report.entries.length
|
122
|
+
|
123
|
+
assert report.entries.keys.include?("#at")
|
124
|
+
|
125
|
+
at_rep = report.entries["#at"]
|
126
|
+
|
127
|
+
assert_equal 3, at_rep.size
|
128
|
+
|
129
|
+
assert_equal "#at 100", at_rep[0].label
|
130
|
+
assert_equal "#at 200", at_rep[1].label
|
131
|
+
assert_equal "#at 300", at_rep[2].label
|
132
|
+
end
|
133
|
+
|
134
|
+
def test_bigo_increments_setter
|
135
|
+
#skip('pass')
|
136
|
+
report = Benchmark.bigo do |x|
|
137
|
+
x.config(:time => 1, :warmup => 1)
|
138
|
+
x.increments = 3
|
139
|
+
x.generate :array
|
140
|
+
|
141
|
+
x.report("#at") {|array, size| array.at rand(size) }
|
142
|
+
end
|
143
|
+
|
144
|
+
assert_equal 1, report.entries.length
|
145
|
+
|
146
|
+
assert report.entries.keys.include?("#at")
|
147
|
+
|
148
|
+
at_rep = report.entries["#at"]
|
149
|
+
|
150
|
+
assert_equal 3, at_rep.size
|
151
|
+
|
152
|
+
assert_equal "#at 100", at_rep[0].label
|
153
|
+
assert_equal "#at 200", at_rep[1].label
|
154
|
+
assert_equal "#at 300", at_rep[2].label
|
7
155
|
end
|
8
156
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: benchmark-bigo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Davy Stevenson
|
@@ -14,121 +14,110 @@ dependencies:
|
|
14
14
|
name: benchmark-ips
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ~>
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '2.0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - ~>
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '2.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: chartkick
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - ~>
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '1.2'
|
34
|
-
- - '>='
|
35
|
-
- !ruby/object:Gem::Version
|
36
|
-
version: 1.2.4
|
37
34
|
type: :runtime
|
38
35
|
prerelease: false
|
39
36
|
version_requirements: !ruby/object:Gem::Requirement
|
40
37
|
requirements:
|
41
|
-
- - ~>
|
38
|
+
- - "~>"
|
42
39
|
- !ruby/object:Gem::Version
|
43
40
|
version: '1.2'
|
44
|
-
- - '>='
|
45
|
-
- !ruby/object:Gem::Version
|
46
|
-
version: 1.2.4
|
47
41
|
- !ruby/object:Gem::Dependency
|
48
42
|
name: minitest
|
49
43
|
requirement: !ruby/object:Gem::Requirement
|
50
44
|
requirements:
|
51
|
-
- - ~>
|
45
|
+
- - "~>"
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: '5.3'
|
54
48
|
type: :development
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
51
|
requirements:
|
58
|
-
- - ~>
|
52
|
+
- - "~>"
|
59
53
|
- !ruby/object:Gem::Version
|
60
54
|
version: '5.3'
|
61
55
|
- !ruby/object:Gem::Dependency
|
62
56
|
name: rdoc
|
63
57
|
requirement: !ruby/object:Gem::Requirement
|
64
58
|
requirements:
|
65
|
-
- - ~>
|
59
|
+
- - "~>"
|
66
60
|
- !ruby/object:Gem::Version
|
67
61
|
version: '4.0'
|
68
62
|
type: :development
|
69
63
|
prerelease: false
|
70
64
|
version_requirements: !ruby/object:Gem::Requirement
|
71
65
|
requirements:
|
72
|
-
- - ~>
|
66
|
+
- - "~>"
|
73
67
|
- !ruby/object:Gem::Version
|
74
68
|
version: '4.0'
|
75
69
|
- !ruby/object:Gem::Dependency
|
76
|
-
name:
|
70
|
+
name: rake
|
77
71
|
requirement: !ruby/object:Gem::Requirement
|
78
72
|
requirements:
|
79
|
-
- -
|
73
|
+
- - ">="
|
80
74
|
- !ruby/object:Gem::Version
|
81
|
-
version: '
|
75
|
+
version: '0'
|
82
76
|
type: :development
|
83
77
|
prerelease: false
|
84
78
|
version_requirements: !ruby/object:Gem::Requirement
|
85
79
|
requirements:
|
86
|
-
- -
|
80
|
+
- - ">="
|
87
81
|
- !ruby/object:Gem::Version
|
88
|
-
version: '
|
82
|
+
version: '0'
|
89
83
|
description: Benchmark objects to help calculate Big O behavior
|
90
84
|
email:
|
91
85
|
- davy.stevenson@gmail.com
|
92
86
|
executables: []
|
93
87
|
extensions: []
|
94
88
|
extra_rdoc_files:
|
95
|
-
- History.txt
|
96
|
-
- Manifest.txt
|
97
89
|
- README.md
|
98
90
|
files:
|
99
|
-
- History.txt
|
100
|
-
- Manifest.txt
|
101
91
|
- README.md
|
102
|
-
- Rakefile
|
103
92
|
- lib/benchmark/bigo.rb
|
104
|
-
- lib/benchmark/bigo/report.rb
|
105
93
|
- lib/benchmark/bigo/job.rb
|
106
|
-
- lib/benchmark/bigo/
|
94
|
+
- lib/benchmark/bigo/report.rb
|
95
|
+
- lib/benchmark/bigo/templates/chart.erb
|
96
|
+
- lib/benchmark/bigo/version.rb
|
107
97
|
- test/benchmark/test_bigo.rb
|
108
|
-
- .gemtest
|
109
98
|
homepage: http://github.com/davy/benchmark-bigo
|
110
99
|
licenses:
|
111
100
|
- MIT
|
112
101
|
metadata: {}
|
113
102
|
post_install_message:
|
114
103
|
rdoc_options:
|
115
|
-
- --main
|
104
|
+
- "--main"
|
116
105
|
- README.md
|
117
106
|
require_paths:
|
118
107
|
- lib
|
119
108
|
required_ruby_version: !ruby/object:Gem::Requirement
|
120
109
|
requirements:
|
121
|
-
- -
|
110
|
+
- - ">="
|
122
111
|
- !ruby/object:Gem::Version
|
123
112
|
version: '0'
|
124
113
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
125
114
|
requirements:
|
126
|
-
- -
|
115
|
+
- - ">="
|
127
116
|
- !ruby/object:Gem::Version
|
128
117
|
version: '0'
|
129
118
|
requirements: []
|
130
119
|
rubyforge_project:
|
131
|
-
rubygems_version: 2.
|
120
|
+
rubygems_version: 2.2.2
|
132
121
|
signing_key:
|
133
122
|
specification_version: 4
|
134
123
|
summary: Benchmark objects to help calculate Big O behavior
|
data/.gemtest
DELETED
File without changes
|
data/History.txt
DELETED
data/Manifest.txt
DELETED
data/Rakefile
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
# -*- ruby -*-
|
2
|
-
|
3
|
-
require "rubygems"
|
4
|
-
require "hoe"
|
5
|
-
|
6
|
-
Hoe.plugin :minitest
|
7
|
-
|
8
|
-
Hoe.spec "benchmark-bigo" do
|
9
|
-
|
10
|
-
developer("Davy Stevenson", "davy.stevenson@gmail.com")
|
11
|
-
|
12
|
-
extra_deps << ["benchmark-ips", '~> 2.0']
|
13
|
-
extra_deps << ["chartkick", '~> 1.2', '>= 1.2.4']
|
14
|
-
|
15
|
-
self.readme_file = 'README.md'
|
16
|
-
|
17
|
-
license "MIT" # this should match the license in the README
|
18
|
-
end
|
19
|
-
|
20
|
-
# vim: syntax=ruby
|