bnchmrkr 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -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: []