benchmark-bigo 0.1.0 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +119 -15
- data/lib/benchmark/bigo.rb +4 -8
- data/lib/benchmark/bigo/chart.rb +148 -0
- data/lib/benchmark/bigo/job.rb +102 -75
- data/lib/benchmark/bigo/report.rb +9 -93
- data/lib/benchmark/bigo/templates/chart.erb +1 -0
- data/lib/benchmark/bigo/termplot.rb +70 -0
- data/lib/benchmark/bigo/version.rb +2 -2
- data/test/benchmark/test_bigo.rb +174 -82
- data/test/benchmark/test_chart.rb +89 -0
- data/test/benchmark/test_termplot.rb +52 -0
- metadata +8 -2
@@ -0,0 +1,89 @@
|
|
1
|
+
require "minitest/autorun"
|
2
|
+
require "benchmark/bigo"
|
3
|
+
|
4
|
+
class TestChart < MiniTest::Test
|
5
|
+
|
6
|
+
def setup
|
7
|
+
@data = [
|
8
|
+
{:name=>"#foo", :data=>{1000=>0.4615925958419669, 2000=>0.46020338479480843, 3000=>0.49106768186885136}},
|
9
|
+
{:name=>"#bar", :data=>{1000=>2.869082276950677, 2000=>5.110045297799111, 3000=>7.439106136103487}},
|
10
|
+
{:name=>"#baz", :data=>{1000=>176.5676126850217, 2000=>349.88823646078873, 3000=>541.7084661739613}}]
|
11
|
+
@sizes = [1000,2000,3000]
|
12
|
+
|
13
|
+
@chart = Benchmark::BigO::Chart.new @data, @sizes
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_initialize
|
17
|
+
assert_equal 1000, @chart.sample_size
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_generate
|
21
|
+
generate = [{:name=>"Growth Chart", :data=>[{:name=>"#foo", :data=>{1000=>0.4615925958419669, 2000=>0.46020338479480843, 3000=>0.49106768186885136}}, {:name=>"#bar", :data=>{1000=>2.869082276950677, 2000=>5.110045297799111, 3000=>7.439106136103487}}, {:name=>"#baz", :data=>{1000=>176.5676126850217, 2000=>349.88823646078873, 3000=>541.7084661739613}}], :opts=>{:discrete=>true, :width=>"800px", :height=>"500px", :min=>0, :max=>651, :library=>{:colors=>["#f0662d", "#8062a6", "#7bc545", "#0883b2", "#ffaa00", "#00c7c3"], :xAxis=>{:type=>"linear", :title=>{:text=>"Size"}}, :yAxis=>{:type=>"linear", :title=>{:text=>"Microseconds per Iteration"}}}}}]
|
22
|
+
|
23
|
+
assert_equal generate, @chart.generate
|
24
|
+
|
25
|
+
generate_and_compare = [{:name=>"Growth Chart", :data=>[{:name=>"#foo", :data=>{1000=>0.4615925958419669, 2000=>0.46020338479480843, 3000=>0.49106768186885136}}, {:name=>"#bar", :data=>{1000=>2.869082276950677, 2000=>5.110045297799111, 3000=>7.439106136103487}}, {:name=>"#baz", :data=>{1000=>176.5676126850217, 2000=>349.88823646078873, 3000=>541.7084661739613}}], :opts=>{:discrete=>true, :width=>"800px", :height=>"500px", :min=>0, :max=>651, :library=>{:colors=>["#f0662d", "#8062a6", "#7bc545", "#0883b2", "#ffaa00", "#00c7c3"], :xAxis=>{:type=>"linear", :title=>{:text=>"Size"}}, :yAxis=>{:type=>"linear", :title=>{:text=>"Microseconds per Iteration"}}}}}, {:name=>"#foo", :data=>[{:name=>"#foo", :data=>{1000=>0.4615925958419669, 2000=>0.46020338479480843, 3000=>0.49106768186885136}}, {:name=>"const", :data=>{1000=>0.4615925958419669, 2000=>0.4615925958419669, 3000=>0.4615925958419669}}, {:name=>"log n", :data=>{1000=>0.4615925958419669, 2000=>0.5079103348835778, 3000=>0.5350044753411086}}, {:name=>"n", :data=>{1000=>0.4615925958419669, 2000=>0.9231851916839338, 3000=>1.3847777875259006}}, {:name=>"n log n", :data=>{1000=>0.46159259584196694, 2000=>1.015820669767156, 3000=>1.6050134260233262}}, {:name=>"n squared", :data=>{1000=>0.4615925958419669, 2000=>1.8463703833678675, 3000=>4.1543333625777015}}], :opts=>{:discrete=>true, :width=>"800px", :height=>"500px", :min=>0, :max=>1, :library=>{:colors=>["#f0662d", "#8062a6", "#7bc545", "#0883b2", "#ffaa00", "#00c7c3"], :xAxis=>{:type=>"linear", :title=>{:text=>"Size"}}, :yAxis=>{:type=>"linear", :title=>{:text=>"Microseconds per Iteration"}}}}}, {:name=>"#bar", :data=>[{:name=>"#bar", :data=>{1000=>2.869082276950677, 2000=>5.110045297799111, 3000=>7.439106136103487}}, {:name=>"const", :data=>{1000=>2.869082276950677, 2000=>2.869082276950677, 3000=>2.869082276950677}}, {:name=>"log n", :data=>{1000=>2.869082276950677, 2000=>3.1569755520807, 3000=>3.3253823222415617}}, {:name=>"n", :data=>{1000=>2.869082276950677, 2000=>5.738164553901354, 3000=>8.60724683085203}}, {:name=>"n log n", :data=>{1000=>2.869082276950677, 2000=>6.313951104161399, 3000=>9.976146966724686}}, {:name=>"n squared", :data=>{1000=>2.869082276950677, 2000=>11.476329107802709, 3000=>25.821740492556092}}], :opts=>{:discrete=>true, :width=>"800px", :height=>"500px", :min=>2, :max=>9, :library=>{:colors=>["#f0662d", "#8062a6", "#7bc545", "#0883b2", "#ffaa00", "#00c7c3"], :xAxis=>{:type=>"linear", :title=>{:text=>"Size"}}, :yAxis=>{:type=>"linear", :title=>{:text=>"Microseconds per Iteration"}}}}}, {:name=>"#baz", :data=>[{:name=>"#baz", :data=>{1000=>176.5676126850217, 2000=>349.88823646078873, 3000=>541.7084661739613}}, {:name=>"const", :data=>{1000=>176.5676126850217, 2000=>176.5676126850217, 3000=>176.5676126850217}}, {:name=>"log n", :data=>{1000=>176.5676126850217, 2000=>194.28499524534556, 3000=>204.64899965406602}}, {:name=>"n", :data=>{1000=>176.5676126850217, 2000=>353.1352253700434, 3000=>529.7028380550651}}, {:name=>"n log n", :data=>{1000=>176.5676126850217, 2000=>388.56999049069105, 3000=>613.946998962198}}, {:name=>"n squared", :data=>{1000=>176.5676126850217, 2000=>706.2704507400867, 3000=>1589.108514165195}}], :opts=>{:discrete=>true, :width=>"800px", :height=>"500px", :min=>141, :max=>651, :library=>{:colors=>["#f0662d", "#8062a6", "#7bc545", "#0883b2", "#ffaa00", "#00c7c3"], :xAxis=>{:type=>"linear", :title=>{:text=>"Size"}}, :yAxis=>{:type=>"linear", :title=>{:text=>"Microseconds per Iteration"}}}}}]
|
26
|
+
|
27
|
+
assert_equal generate_and_compare, @chart.generate(:compare => true)
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_opts_for
|
31
|
+
|
32
|
+
opts = {:discrete=>true, :width=>"800px", :height=>"500px", :min=>0, :max=>4, :library=>{:colors=>["#f0662d", "#8062a6", "#7bc545", "#0883b2", "#ffaa00", "#00c7c3"], :xAxis=>{:type=>"linear", :title=>{:text=>"Size"}}, :yAxis=>{:type=>"linear", :title=>{:text=>"Microseconds per Iteration"}}}}
|
33
|
+
|
34
|
+
assert_equal opts, @chart.opts_for([{:data => {1=> 1, 2=> 2, 3=> 3}}])
|
35
|
+
|
36
|
+
assert_equal opts, @chart.opts_for({:data => {1=> 1, 2=> 2, 3=> 3}})
|
37
|
+
|
38
|
+
assert_equal opts, @chart.opts_for([{:data => {1=> 1, 2=> 2, 3=> 3}}, {:data => { 1=> 1, 2=> 2, 3=> 3}}])
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_comparison_for
|
42
|
+
|
43
|
+
comparison = [{:data=>{1000=>1, 2000=>2, 3000=>3}}, {:name=>"const", :data=>{1000=>1.0, 2000=>1.0, 3000=>1.0}}, {:name=>"log n", :data=>{1000=>1.0, 2000=>1.1003433318879936, 3000=>1.1590404182398875}}, {:name=>"n", :data=>{1000=>1.0, 2000=>2.0, 3000=>3.0}}, {:name=>"n log n", :data=>{1000=>1.0, 2000=>2.200686663775987, 3000=>3.4771212547196626}}, {:name=>"n squared", :data=>{1000=>1.0, 2000=>4.0, 3000=>9.0}}]
|
44
|
+
|
45
|
+
assert_equal comparison, @chart.comparison_for({:data => {1000 => 1, 2000 => 2, 3000 => 3}})
|
46
|
+
|
47
|
+
end
|
48
|
+
|
49
|
+
def test_const_type
|
50
|
+
assert Benchmark::BigO::Chart::TYPES.include? :const
|
51
|
+
|
52
|
+
assert_equal "const", @chart.title_for(:const)
|
53
|
+
assert_equal 10, @chart.factor_for(:const, 10)
|
54
|
+
assert_equal 10, @chart.data_generator(:const, @sizes.last, 10)
|
55
|
+
end
|
56
|
+
|
57
|
+
def test_logn_type
|
58
|
+
assert Benchmark::BigO::Chart::TYPES.include? :logn
|
59
|
+
|
60
|
+
assert_equal "log n", @chart.title_for(:logn)
|
61
|
+
assert_equal 10/3.0, @chart.factor_for(:logn, 10)
|
62
|
+
assert_equal (Math.log10(3000) * 10/3.0), @chart.data_generator(:logn, @sizes.last, 10)
|
63
|
+
end
|
64
|
+
|
65
|
+
def test_n_type
|
66
|
+
assert Benchmark::BigO::Chart::TYPES.include? :n
|
67
|
+
|
68
|
+
assert_equal "n", @chart.title_for(:n)
|
69
|
+
assert_equal 0.01, @chart.factor_for(:n, 10)
|
70
|
+
assert_equal 30, @chart.data_generator(:n, @sizes.last, 10)
|
71
|
+
end
|
72
|
+
|
73
|
+
def test_nlogn_type
|
74
|
+
assert Benchmark::BigO::Chart::TYPES.include? :nlogn
|
75
|
+
|
76
|
+
assert_equal "n log n", @chart.title_for(:nlogn)
|
77
|
+
assert_equal "0.003333", sprintf("%0.6f", @chart.factor_for(:nlogn, 10))
|
78
|
+
assert_equal "34.771213", sprintf("%0.6f", @chart.data_generator(:nlogn, @sizes.last, 10))
|
79
|
+
end
|
80
|
+
|
81
|
+
def test_n_sq_type
|
82
|
+
assert Benchmark::BigO::Chart::TYPES.include? :n_sq
|
83
|
+
|
84
|
+
assert_equal "n squared", @chart.title_for(:n_sq)
|
85
|
+
assert_equal "0.000010", sprintf("%0.6f", @chart.factor_for(:n_sq, 10))
|
86
|
+
assert_equal "90.000000", sprintf("%0.6f", @chart.data_generator(:n_sq, @sizes.last, 10))
|
87
|
+
end
|
88
|
+
|
89
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
require "minitest/autorun"
|
2
|
+
require "benchmark/bigo"
|
3
|
+
|
4
|
+
class TestTermPlot < MiniTest::Test
|
5
|
+
|
6
|
+
def setup
|
7
|
+
@data = [
|
8
|
+
{:name=>"#foo", :data=>{1000=>50.46159, 2000=>75.460203, 3000=>125.4910676}},
|
9
|
+
{:name=>"#bar", :data=>{1000=>100.869, 2000=>200.110, 3000=>300.439}},
|
10
|
+
{:name=>"#baz", :data=>{1000=>176, 2000=>349, 3000=>541}}]
|
11
|
+
@sizes = [1000,2000,3000]
|
12
|
+
|
13
|
+
@termplot = Benchmark::BigO::TermPlot.new @data, @sizes
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_title_for
|
17
|
+
|
18
|
+
assert_equal "#foo", @termplot.title_for(0)
|
19
|
+
assert_equal "#bar", @termplot.title_for(1)
|
20
|
+
assert_equal "#baz", @termplot.title_for(2)
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_dat_lines
|
24
|
+
|
25
|
+
lines = ["1000 50.46159 100.869 176",
|
26
|
+
"2000 75.460203 200.11 349",
|
27
|
+
"3000 125.4910676 300.439 541"]
|
28
|
+
|
29
|
+
assert_equal lines, @termplot.dat_lines
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_commands
|
33
|
+
|
34
|
+
commands = [
|
35
|
+
"set term dumb",
|
36
|
+
"set key top left vertical inside width 3",
|
37
|
+
"plot '/var/folders/zj/sjlr64rx0933f09kk3hntmnc0000gq/T/termplot20141103-11019-1l0jv3n' using 1:2 title '#foo' with lines,\\",
|
38
|
+
"\"\" using 1:3 title '#bar' with lines,\\",
|
39
|
+
"\"\" using 1:4 title '#baz' with lines"]
|
40
|
+
|
41
|
+
assert_equal 5, @termplot.commands.length
|
42
|
+
assert_equal commands[0], @termplot.commands[0]
|
43
|
+
assert_equal commands[1], @termplot.commands[1]
|
44
|
+
|
45
|
+
(2...3).each do |i|
|
46
|
+
assert @termplot.commands[i].include? "using 1:#{i} title '#{@data[i-2][:name]}'"
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
|
51
|
+
|
52
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: benchmark-bigo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Davy Stevenson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-11-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: benchmark-ips
|
@@ -90,11 +90,15 @@ extra_rdoc_files:
|
|
90
90
|
files:
|
91
91
|
- README.md
|
92
92
|
- lib/benchmark/bigo.rb
|
93
|
+
- lib/benchmark/bigo/chart.rb
|
93
94
|
- lib/benchmark/bigo/job.rb
|
94
95
|
- lib/benchmark/bigo/report.rb
|
95
96
|
- lib/benchmark/bigo/templates/chart.erb
|
97
|
+
- lib/benchmark/bigo/termplot.rb
|
96
98
|
- lib/benchmark/bigo/version.rb
|
97
99
|
- test/benchmark/test_bigo.rb
|
100
|
+
- test/benchmark/test_chart.rb
|
101
|
+
- test/benchmark/test_termplot.rb
|
98
102
|
homepage: http://github.com/davy/benchmark-bigo
|
99
103
|
licenses:
|
100
104
|
- MIT
|
@@ -123,3 +127,5 @@ specification_version: 4
|
|
123
127
|
summary: Benchmark objects to help calculate Big O behavior
|
124
128
|
test_files:
|
125
129
|
- test/benchmark/test_bigo.rb
|
130
|
+
- test/benchmark/test_chart.rb
|
131
|
+
- test/benchmark/test_termplot.rb
|