bnchmrkr 0.0.1

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.
@@ -0,0 +1,78 @@
1
+ require_relative File.expand_path(sprintf('%s/../../lib/bnchmrkr', File.dirname(__FILE__)))
2
+ require 'test-unit'
3
+
4
+ class TestContrived < Test::Unit::TestCase
5
+
6
+ def setup
7
+ @tester = Bnchmrkr.new({
8
+ :count_to_1k => lambda { 1.upto(1000).each { |i| i } },
9
+ :count_to_5k => lambda { 1.upto(5000).each { |i| i } },
10
+ :count_to_10k => lambda { 1.upto(10000).each { |i| i } },
11
+ :count_to_50k => lambda { 1.upto(50000).each { |i| i } },
12
+ :count_to_100k => lambda { 1.upto(100000).each { |i| i } },
13
+ }, 10)
14
+
15
+ @tester.benchmark!
16
+ end
17
+
18
+ def test_fastest
19
+ assert_equal(:count_to_1k, @tester.fastest_overall[:name])
20
+ assert_true(@tester.fastest_overall[:measure] < @tester.slowest_overall[:measure])
21
+ end
22
+
23
+ def test_slowest
24
+ slowest_overall = @tester.slowest_overall
25
+ fastest_overall = @tester.fastest_overall
26
+
27
+ assert_equal(:count_to_100k, slowest_overall[:name])
28
+ assert_true(slowest_overall[:measure] > fastest_overall[:measure])
29
+ end
30
+
31
+ def test_speed_by_type
32
+ @tester.types.each do |type|
33
+ slowest = @tester.slowest_by_type(type)
34
+ fastest = @tester.fastest_by_type(type)
35
+
36
+ assert_true(slowest > fastest)
37
+ end
38
+ end
39
+
40
+ def test_is_faster?
41
+ fast = @tester.fastest_overall
42
+ slow = @tester.slowest_overall
43
+
44
+ forward = @tester.is_faster?(fast, slow)
45
+ reverse = @tester.is_faster?(slow, fast)
46
+ equal = @tester.is_faster?(fast, fast)
47
+
48
+ assert_not_equal(forward, reverse)
49
+ assert_true(forward)
50
+ assert_false(reverse)
51
+ assert_false(equal)
52
+ end
53
+
54
+ def test_is_slower?
55
+ fast = @tester.fastest_overall
56
+ slow = @tester.slowest_overall
57
+
58
+ forward = @tester.is_slower?(slow, fast)
59
+ reverse = @tester.is_slower?(fast, slow)
60
+ equal = @tester.is_slower?(slow, slow)
61
+
62
+ assert_not_equal(forward, reverse)
63
+ assert_true(forward)
64
+ assert_false(reverse)
65
+ assert_true(equal) # ugh, this is misleading.. but is_slower? is boolean opposite of is_slower?
66
+ end
67
+
68
+ def test_faster_by
69
+
70
+ fast = @tester.fastest_overall
71
+ slow = @tester.slowest_overall
72
+
73
+ assert_true(@tester.faster_by(fast, slow, false).is_a?(Float))
74
+ assert_false(@tester.faster_by(slow, fast))
75
+
76
+ end
77
+
78
+ end
@@ -0,0 +1,56 @@
1
+ require_relative File.expand_path(sprintf('%s/../../lib/bnchmrkr', File.dirname(__FILE__)))
2
+ require 'test-unit'
3
+
4
+ class TestInitialize < Test::Unit::TestCase
5
+
6
+ def setup
7
+
8
+ end
9
+
10
+ def test_valid
11
+
12
+ assert_nothing_raised do
13
+ Bnchmrkr.new({:foo => lambda {}})
14
+ Bnchmrkr.new({:bar => lambda {}}, 10)
15
+ Bnchmrkr.new({:foo => lambda { 'foo' }, :bar => lambda { 'bar' } })
16
+ Bnchmrkr.new({:bar => lambda { 'bar' }, :baz => lambda { 'baz' } })
17
+ Bnchmrkr.new(:foo => lambda { 'fizz' }) # hipster formatting supported by default
18
+ end
19
+
20
+ end
21
+
22
+ def test_invalid
23
+
24
+ # not a proc
25
+ assert_raise ArgumentError do
26
+ Bnchmrkr.new({:foo => :bar})
27
+ end
28
+
29
+ # one valid, one invalid
30
+ assert_raise ArgumentError do
31
+ Bnchmrkr.new({
32
+ :foo => lambda { 'foo' },
33
+ :bar => 'bar',
34
+ })
35
+ end
36
+
37
+ # not a number
38
+ assert_raise ArgumentError do
39
+ Bnchmrkr.new({:foo => :bar}, 'foo')
40
+ end
41
+
42
+ # not a number pt 2
43
+ assert_raise ArgumentError do
44
+ Bnchmrkr.new({:foo => :bar}, :foo)
45
+ end
46
+
47
+ # not a fixnum
48
+ assert_raise ArgumentError do
49
+ Bnchmrkr.new({:foo => :bar}, 1.1)
50
+ end
51
+
52
+
53
+
54
+ end
55
+
56
+ end
metadata ADDED
@@ -0,0 +1,97 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: bnchmrkr
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Conor Horan-Kates
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-03-08 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: jeweler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: test-unit
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: 3.0.0
34
+ - - ~>
35
+ - !ruby/object:Gem::Version
36
+ version: 3.0.0
37
+ type: :development
38
+ prerelease: false
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - '>='
42
+ - !ruby/object:Gem::Version
43
+ version: 3.0.0
44
+ - - ~>
45
+ - !ruby/object:Gem::Version
46
+ version: 3.0.0
47
+ description: given a hash of lambdas, runs and compares the amount of time each implementation
48
+ takes
49
+ email: conor.code@gmail.com
50
+ executables: []
51
+ extensions: []
52
+ extra_rdoc_files:
53
+ - README.md
54
+ files:
55
+ - Gemfile
56
+ - Gemfile.lock
57
+ - README.md
58
+ - Rakefile
59
+ - VERSION
60
+ - examples/contrived.rb
61
+ - examples/fibonacci.rb
62
+ - examples/file_reading.rb
63
+ - examples/ls_vs_stat.rb
64
+ - lib/bnchmrkr.rb
65
+ - resources/li-100kw.txt
66
+ - resources/li-10kw.txt
67
+ - resources/li-1Mw.txt
68
+ - resources/li-1kw.txt
69
+ - resources/li-500kw.txt
70
+ - resources/li-50kw.txt
71
+ - test/unit/test_contrived.rb
72
+ - test/unit/test_initialize.rb
73
+ homepage: http://github.com/chorankates/bnchmrkr
74
+ licenses:
75
+ - MIT
76
+ metadata: {}
77
+ post_install_message:
78
+ rdoc_options: []
79
+ require_paths:
80
+ - lib
81
+ required_ruby_version: !ruby/object:Gem::Requirement
82
+ requirements:
83
+ - - '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ required_rubygems_version: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - '>='
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
91
+ requirements: []
92
+ rubyforge_project:
93
+ rubygems_version: 2.2.2
94
+ signing_key:
95
+ specification_version: 4
96
+ summary: compare execution time
97
+ test_files: []