ruby_micro_benchmarks 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/benchmarks/array.rb +34 -0
- data/benchmarks/hash.rb +25 -0
- data/benchmarks/operators.rb +58 -0
- data/benchmarks/string.rb +75 -0
- data/bin/ruby_micro_benchmarks +5 -0
- data/lib/ruby_micro_benchmarks.rb +37 -0
- metadata +51 -0
data/benchmarks/array.rb
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
@input_data = [0,1000,10_000]
|
2
|
+
@count = 1_000_000
|
3
|
+
|
4
|
+
benchmark("array.first", @input_data, @count) do |array|
|
5
|
+
array.first
|
6
|
+
end
|
7
|
+
|
8
|
+
benchmark("array[0]", @input_data, @count) do |array|
|
9
|
+
array[0]
|
10
|
+
end
|
11
|
+
|
12
|
+
benchmark("array.last", @input_data, @count) do |array|
|
13
|
+
array.last
|
14
|
+
end
|
15
|
+
|
16
|
+
benchmark("array[-1]", @input_data, @count) do |array|
|
17
|
+
array[-1]
|
18
|
+
end
|
19
|
+
|
20
|
+
benchmark("array.map(&:to_i)", [0,100,1000], @count) do |array|
|
21
|
+
array.map(&:to_i)
|
22
|
+
end
|
23
|
+
|
24
|
+
benchmark("array.map{|n| n.to_i }", [0,100,1000], @count) do |array|
|
25
|
+
array.map{|n| n.to_i }
|
26
|
+
end
|
27
|
+
|
28
|
+
benchmark("[]", nil, @count) do |array|
|
29
|
+
[]
|
30
|
+
end
|
31
|
+
|
32
|
+
benchmark("Array.new", nil, @count) do |array|
|
33
|
+
Array.new
|
34
|
+
end
|
data/benchmarks/hash.rb
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
@count = 1_000_000
|
2
|
+
|
3
|
+
hash = {'a' => 1}
|
4
|
+
|
5
|
+
benchmark("hash['a']", nil, @count) do |array|
|
6
|
+
hash['a']
|
7
|
+
end
|
8
|
+
|
9
|
+
hash = {:a => 1}
|
10
|
+
|
11
|
+
benchmark("hash[:a]", nil, @count) do |array|
|
12
|
+
hash[:a]
|
13
|
+
end
|
14
|
+
|
15
|
+
hash = {:a => 9**10000}
|
16
|
+
|
17
|
+
benchmark("if hash[:a]", nil, @count) do |array|
|
18
|
+
if hash[:a]
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
benchmark("if hash.has_key? :a", nil, @count) do |array|
|
23
|
+
if hash.has_key? :a
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
@count = 10_000_000
|
2
|
+
|
3
|
+
benchmark("@a ||= 1", nil, @count) do
|
4
|
+
@a ||= 1
|
5
|
+
end
|
6
|
+
|
7
|
+
benchmark("@a = @a || 1", nil, @count) do
|
8
|
+
@a = @a || 1
|
9
|
+
end
|
10
|
+
|
11
|
+
benchmark("@a || @a = 1", nil, @count) do
|
12
|
+
@a || @a = 1
|
13
|
+
end
|
14
|
+
|
15
|
+
benchmark("unless true", nil, @count) do
|
16
|
+
unless true
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
benchmark("unless false", nil, @count) do
|
21
|
+
unless false
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
benchmark("if false", nil, @count) do
|
26
|
+
unless true
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
benchmark("if true", nil, @count) do
|
31
|
+
unless false
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
benchmark("not true", nil, @count) do
|
36
|
+
not true
|
37
|
+
end
|
38
|
+
|
39
|
+
benchmark("!true", nil, @count) do
|
40
|
+
!true
|
41
|
+
end
|
42
|
+
|
43
|
+
x = 0
|
44
|
+
benchmark("x += 1", nil, @count) do
|
45
|
+
x += 1
|
46
|
+
end
|
47
|
+
|
48
|
+
benchmark("x = x + 1", nil, @count) do
|
49
|
+
x = x + 1
|
50
|
+
end
|
51
|
+
|
52
|
+
benchmark("x = 1; z = 2", nil, @count) do
|
53
|
+
x = 1; z = 2
|
54
|
+
end
|
55
|
+
|
56
|
+
benchmark("x,z = 1,2", nil, @count) do
|
57
|
+
x,z = 1,2
|
58
|
+
end
|
@@ -0,0 +1,75 @@
|
|
1
|
+
@count = 100_000
|
2
|
+
|
3
|
+
benchmark('"big string"', nil, @count) do |string|
|
4
|
+
"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus mollis faucibus tortor, eu dignissim mi molestie porta. Duis id vulputate neque. Aliquam arcu tellus, posuere quis convallis et, cursus ut justo. Praesent euismod congue congue. Mauris cursus eleifend ullamcorper. Nullam eu libero sit amet diam elementum ultrices consequat nec nulla. Nam pellentesque lorem eleifend neque dapibus tempus. Integer et turpis nec justo suscipit interdum et eu neque.
|
5
|
+
|
6
|
+
Curabitur viverra interdum tortor, eget pharetra neque malesuada id. Quisque sapien mauris, scelerisque in rutrum eu, tempor ut odio. Cras feugiat malesuada lacinia. Sed dictum ligula eget magna ullamcorper consequat. Etiam odio augue, blandit in commodo in, commodo ut neque. Curabitur fringilla convallis metus, in feugiat dolor euismod pellentesque. Sed ultrices adipiscing fringilla. Proin tempor nisl a felis vulputate ac ultricies lacus dignissim. In hac habitasse platea dictumst. Etiam nec lacus orci. Aliquam ac quam non lorem congue sodales ut vitae orci.
|
7
|
+
|
8
|
+
Praesent in tincidunt justo. Integer vel justo nunc. Aliquam quis sem enim. Praesent elementum, augue quis tristique ultrices, est augue vehicula enim, vitae consequat odio neque vitae nibh. Nunc vitae convallis dui. Morbi sit amet blandit diam. Nunc sit amet accumsan quam. In dapibus lectus bibendum metus vulputate porttitor. Praesent commodo fringilla eros, in pulvinar arcu varius nec.
|
9
|
+
|
10
|
+
Pellentesque quis nisi quis est vehicula rutrum imperdiet faucibus dolor. Nulla in enim lectus. Fusce vitae sem ut est eleifend euismod. Donec vitae nunc a ipsum vestibulum laoreet. Cras ultrices convallis nisl fringilla vulputate. Donec nec odio neque. Sed enim tellus, feugiat id condimentum vitae, iaculis sed dolor. Aliquam erat volutpat. Ut et nisl odio, ut varius ante. Praesent id arcu vel nibh tincidunt rhoncus. Etiam auctor lacus sit amet tortor posuere vitae cursus enim aliquet. Aliquam lobortis, est ut sollicitudin mollis, enim ante consectetur metus, eget aliquam dui justo in nisi.
|
11
|
+
|
12
|
+
Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nam purus massa, dapibus vitae molestie eu, adipiscing sed lacus. Praesent condimentum sem vitae nisl ornare cursus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Quisque eget nisi non lorem imperdiet ultrices. Proin at diam nunc. Morbi pharetra aliquam hendrerit. Duis convallis fermentum scelerisque. Nulla facilisi."
|
13
|
+
end
|
14
|
+
|
15
|
+
benchmark("'big string'", nil, @count) do |string|
|
16
|
+
'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus mollis faucibus tortor, eu dignissim mi molestie porta. Duis id vulputate neque. Aliquam arcu tellus, posuere quis convallis et, cursus ut justo. Praesent euismod congue congue. Mauris cursus eleifend ullamcorper. Nullam eu libero sit amet diam elementum ultrices consequat nec nulla. Nam pellentesque lorem eleifend neque dapibus tempus. Integer et turpis nec justo suscipit interdum et eu neque.
|
17
|
+
|
18
|
+
Curabitur viverra interdum tortor, eget pharetra neque malesuada id. Quisque sapien mauris, scelerisque in rutrum eu, tempor ut odio. Cras feugiat malesuada lacinia. Sed dictum ligula eget magna ullamcorper consequat. Etiam odio augue, blandit in commodo in, commodo ut neque. Curabitur fringilla convallis metus, in feugiat dolor euismod pellentesque. Sed ultrices adipiscing fringilla. Proin tempor nisl a felis vulputate ac ultricies lacus dignissim. In hac habitasse platea dictumst. Etiam nec lacus orci. Aliquam ac quam non lorem congue sodales ut vitae orci.
|
19
|
+
|
20
|
+
Praesent in tincidunt justo. Integer vel justo nunc. Aliquam quis sem enim. Praesent elementum, augue quis tristique ultrices, est augue vehicula enim, vitae consequat odio neque vitae nibh. Nunc vitae convallis dui. Morbi sit amet blandit diam. Nunc sit amet accumsan quam. In dapibus lectus bibendum metus vulputate porttitor. Praesent commodo fringilla eros, in pulvinar arcu varius nec.
|
21
|
+
|
22
|
+
Pellentesque quis nisi quis est vehicula rutrum imperdiet faucibus dolor. Nulla in enim lectus. Fusce vitae sem ut est eleifend euismod. Donec vitae nunc a ipsum vestibulum laoreet. Cras ultrices convallis nisl fringilla vulputate. Donec nec odio neque. Sed enim tellus, feugiat id condimentum vitae, iaculis sed dolor. Aliquam erat volutpat. Ut et nisl odio, ut varius ante. Praesent id arcu vel nibh tincidunt rhoncus. Etiam auctor lacus sit amet tortor posuere vitae cursus enim aliquet. Aliquam lobortis, est ut sollicitudin mollis, enim ante consectetur metus, eget aliquam dui justo in nisi.
|
23
|
+
|
24
|
+
Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nam purus massa, dapibus vitae molestie eu, adipiscing sed lacus. Praesent condimentum sem vitae nisl ornare cursus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Quisque eget nisi non lorem imperdiet ultrices. Proin at diam nunc. Morbi pharetra aliquam hendrerit. Duis convallis fermentum scelerisque. Nulla facilisi.'
|
25
|
+
end
|
26
|
+
|
27
|
+
benchmark("'big string' + 'big string'", nil, @count) do |string|
|
28
|
+
'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus mollis faucibus tortor, eu dignissim mi molestie porta. Duis id vulputate neque. Aliquam arcu tellus, posuere quis convallis et, cursus ut justo. Praesent euismod congue congue. Mauris cursus eleifend ullamcorper. Nullam eu libero sit amet diam elementum ultrices consequat nec nulla. Nam pellentesque lorem eleifend neque dapibus tempus. Integer et turpis nec justo suscipit interdum et eu neque.
|
29
|
+
|
30
|
+
Curabitur viverra interdum tortor, eget pharetra neque malesuada id. Quisque sapien mauris, scelerisque in rutrum eu, tempor ut odio. Cras feugiat malesuada lacinia. Sed dictum ligula eget magna ullamcorper consequat. Etiam odio augue, blandit in commodo in, commodo ut neque. Curabitur fringilla convallis metus, in feugiat dolor euismod pellentesque. Sed ultrices adipiscing fringilla. Proin tempor nisl a felis vulputate ac ultricies lacus dignissim. In hac habitasse platea dictumst. Etiam nec lacus orci. Aliquam ac quam non lorem congue sodales ut vitae orci.
|
31
|
+
|
32
|
+
Praesent in tincidunt justo. Integer vel justo nunc. Aliquam quis sem enim. Praesent elementum, augue quis tristique ultrices, est augue vehicula enim, vitae consequat odio neque vitae nibh. Nunc vitae convallis dui. Morbi sit amet blandit diam. Nunc sit amet accumsan quam. In dapibus lectus bibendum metus vulputate porttitor. Praesent commodo fringilla eros, in pulvinar arcu varius nec.
|
33
|
+
|
34
|
+
Pellentesque quis nisi quis est vehicula rutrum imperdiet faucibus dolor. Nulla in enim lectus. Fusce vitae sem ut est eleifend euismod. Donec vitae nunc a ipsum vestibulum laoreet. Cras ultrices convallis nisl fringilla vulputate. Donec nec odio neque. Sed enim tellus, feugiat id condimentum vitae, iaculis sed dolor. Aliquam erat volutpat. Ut et nisl odio, ut varius ante. Praesent id arcu vel nibh tincidunt rhoncus. Etiam auctor lacus sit amet tortor posuere vitae cursus enim aliquet. Aliquam lobortis, est ut sollicitudin mollis, enim ante consectetur metus, eget aliquam dui justo in nisi.
|
35
|
+
|
36
|
+
Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nam purus massa, dapibus vitae molestie eu, adipiscing sed lacus. Praesent condimentum sem vitae nisl ornare cursus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Quisque eget nisi non lorem imperdiet ultrices. Proin at diam nunc. Morbi pharetra aliquam hendrerit. Duis convallis fermentum scelerisque. Nulla facilisi.' + 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus mollis faucibus tortor, eu dignissim mi molestie porta. Duis id vulputate neque. Aliquam arcu tellus, posuere quis convallis et, cursus ut justo. Praesent euismod congue congue. Mauris cursus eleifend ullamcorper. Nullam eu libero sit amet diam elementum ultrices consequat nec nulla. Nam pellentesque lorem eleifend neque dapibus tempus. Integer et turpis nec justo suscipit interdum et eu neque.
|
37
|
+
|
38
|
+
Curabitur viverra interdum tortor, eget pharetra neque malesuada id. Quisque sapien mauris, scelerisque in rutrum eu, tempor ut odio. Cras feugiat malesuada lacinia. Sed dictum ligula eget magna ullamcorper consequat. Etiam odio augue, blandit in commodo in, commodo ut neque. Curabitur fringilla convallis metus, in feugiat dolor euismod pellentesque. Sed ultrices adipiscing fringilla. Proin tempor nisl a felis vulputate ac ultricies lacus dignissim. In hac habitasse platea dictumst. Etiam nec lacus orci. Aliquam ac quam non lorem congue sodales ut vitae orci.
|
39
|
+
|
40
|
+
Praesent in tincidunt justo. Integer vel justo nunc. Aliquam quis sem enim. Praesent elementum, augue quis tristique ultrices, est augue vehicula enim, vitae consequat odio neque vitae nibh. Nunc vitae convallis dui. Morbi sit amet blandit diam. Nunc sit amet accumsan quam. In dapibus lectus bibendum metus vulputate porttitor. Praesent commodo fringilla eros, in pulvinar arcu varius nec.
|
41
|
+
|
42
|
+
Pellentesque quis nisi quis est vehicula rutrum imperdiet faucibus dolor. Nulla in enim lectus. Fusce vitae sem ut est eleifend euismod. Donec vitae nunc a ipsum vestibulum laoreet. Cras ultrices convallis nisl fringilla vulputate. Donec nec odio neque. Sed enim tellus, feugiat id condimentum vitae, iaculis sed dolor. Aliquam erat volutpat. Ut et nisl odio, ut varius ante. Praesent id arcu vel nibh tincidunt rhoncus. Etiam auctor lacus sit amet tortor posuere vitae cursus enim aliquet. Aliquam lobortis, est ut sollicitudin mollis, enim ante consectetur metus, eget aliquam dui justo in nisi.
|
43
|
+
|
44
|
+
Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nam purus massa, dapibus vitae molestie eu, adipiscing sed lacus. Praesent condimentum sem vitae nisl ornare cursus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Quisque eget nisi non lorem imperdiet ultrices. Proin at diam nunc. Morbi pharetra aliquam hendrerit. Duis convallis fermentum scelerisque. Nulla facilisi.'
|
45
|
+
end
|
46
|
+
|
47
|
+
benchmark("'big string' << 'big string'", nil, @count) do |string|
|
48
|
+
'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus mollis faucibus tortor, eu dignissim mi molestie porta. Duis id vulputate neque. Aliquam arcu tellus, posuere quis convallis et, cursus ut justo. Praesent euismod congue congue. Mauris cursus eleifend ullamcorper. Nullam eu libero sit amet diam elementum ultrices consequat nec nulla. Nam pellentesque lorem eleifend neque dapibus tempus. Integer et turpis nec justo suscipit interdum et eu neque.
|
49
|
+
|
50
|
+
Curabitur viverra interdum tortor, eget pharetra neque malesuada id. Quisque sapien mauris, scelerisque in rutrum eu, tempor ut odio. Cras feugiat malesuada lacinia. Sed dictum ligula eget magna ullamcorper consequat. Etiam odio augue, blandit in commodo in, commodo ut neque. Curabitur fringilla convallis metus, in feugiat dolor euismod pellentesque. Sed ultrices adipiscing fringilla. Proin tempor nisl a felis vulputate ac ultricies lacus dignissim. In hac habitasse platea dictumst. Etiam nec lacus orci. Aliquam ac quam non lorem congue sodales ut vitae orci.
|
51
|
+
|
52
|
+
Praesent in tincidunt justo. Integer vel justo nunc. Aliquam quis sem enim. Praesent elementum, augue quis tristique ultrices, est augue vehicula enim, vitae consequat odio neque vitae nibh. Nunc vitae convallis dui. Morbi sit amet blandit diam. Nunc sit amet accumsan quam. In dapibus lectus bibendum metus vulputate porttitor. Praesent commodo fringilla eros, in pulvinar arcu varius nec.
|
53
|
+
|
54
|
+
Pellentesque quis nisi quis est vehicula rutrum imperdiet faucibus dolor. Nulla in enim lectus. Fusce vitae sem ut est eleifend euismod. Donec vitae nunc a ipsum vestibulum laoreet. Cras ultrices convallis nisl fringilla vulputate. Donec nec odio neque. Sed enim tellus, feugiat id condimentum vitae, iaculis sed dolor. Aliquam erat volutpat. Ut et nisl odio, ut varius ante. Praesent id arcu vel nibh tincidunt rhoncus. Etiam auctor lacus sit amet tortor posuere vitae cursus enim aliquet. Aliquam lobortis, est ut sollicitudin mollis, enim ante consectetur metus, eget aliquam dui justo in nisi.
|
55
|
+
|
56
|
+
Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nam purus massa, dapibus vitae molestie eu, adipiscing sed lacus. Praesent condimentum sem vitae nisl ornare cursus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Quisque eget nisi non lorem imperdiet ultrices. Proin at diam nunc. Morbi pharetra aliquam hendrerit. Duis convallis fermentum scelerisque. Nulla facilisi.' << 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus mollis faucibus tortor, eu dignissim mi molestie porta. Duis id vulputate neque. Aliquam arcu tellus, posuere quis convallis et, cursus ut justo. Praesent euismod congue congue. Mauris cursus eleifend ullamcorper. Nullam eu libero sit amet diam elementum ultrices consequat nec nulla. Nam pellentesque lorem eleifend neque dapibus tempus. Integer et turpis nec justo suscipit interdum et eu neque.
|
57
|
+
|
58
|
+
Curabitur viverra interdum tortor, eget pharetra neque malesuada id. Quisque sapien mauris, scelerisque in rutrum eu, tempor ut odio. Cras feugiat malesuada lacinia. Sed dictum ligula eget magna ullamcorper consequat. Etiam odio augue, blandit in commodo in, commodo ut neque. Curabitur fringilla convallis metus, in feugiat dolor euismod pellentesque. Sed ultrices adipiscing fringilla. Proin tempor nisl a felis vulputate ac ultricies lacus dignissim. In hac habitasse platea dictumst. Etiam nec lacus orci. Aliquam ac quam non lorem congue sodales ut vitae orci.
|
59
|
+
|
60
|
+
Praesent in tincidunt justo. Integer vel justo nunc. Aliquam quis sem enim. Praesent elementum, augue quis tristique ultrices, est augue vehicula enim, vitae consequat odio neque vitae nibh. Nunc vitae convallis dui. Morbi sit amet blandit diam. Nunc sit amet accumsan quam. In dapibus lectus bibendum metus vulputate porttitor. Praesent commodo fringilla eros, in pulvinar arcu varius nec.
|
61
|
+
|
62
|
+
Pellentesque quis nisi quis est vehicula rutrum imperdiet faucibus dolor. Nulla in enim lectus. Fusce vitae sem ut est eleifend euismod. Donec vitae nunc a ipsum vestibulum laoreet. Cras ultrices convallis nisl fringilla vulputate. Donec nec odio neque. Sed enim tellus, feugiat id condimentum vitae, iaculis sed dolor. Aliquam erat volutpat. Ut et nisl odio, ut varius ante. Praesent id arcu vel nibh tincidunt rhoncus. Etiam auctor lacus sit amet tortor posuere vitae cursus enim aliquet. Aliquam lobortis, est ut sollicitudin mollis, enim ante consectetur metus, eget aliquam dui justo in nisi.
|
63
|
+
|
64
|
+
Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nam purus massa, dapibus vitae molestie eu, adipiscing sed lacus. Praesent condimentum sem vitae nisl ornare cursus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Quisque eget nisi non lorem imperdiet ultrices. Proin at diam nunc. Morbi pharetra aliquam hendrerit. Duis convallis fermentum scelerisque. Nulla facilisi.'
|
65
|
+
end
|
66
|
+
|
67
|
+
a = '1' * 100
|
68
|
+
c = '2' * 100
|
69
|
+
benchmark("'string ' << a << ' ' << c", nil, @count) do |string|
|
70
|
+
'string ' << a << ' ' << c
|
71
|
+
end
|
72
|
+
|
73
|
+
benchmark('"string #{a} #{c}"', nil, @count) do |string|
|
74
|
+
"string #{a} #{c}"
|
75
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'benchmark'
|
2
|
+
|
3
|
+
def head
|
4
|
+
$stderr.puts RUBY_DESCRIPTION
|
5
|
+
$stderr.printf "%-35s user system total real\n", ''
|
6
|
+
end
|
7
|
+
|
8
|
+
def run_benchmarks
|
9
|
+
Dir[File.expand_path("#{File.dirname(__FILE__)}/../benchmarks/*.rb")].each {|f| require f }
|
10
|
+
end
|
11
|
+
|
12
|
+
def run_benchmark(file)
|
13
|
+
require file
|
14
|
+
end
|
15
|
+
|
16
|
+
def benchmark(title, input_data = nil, count = 1, &block)
|
17
|
+
input_data.is_a?(Array) ? benchmark_cycle(title, input_data, count, &block) : measure(title, input_data, count, &block)
|
18
|
+
end
|
19
|
+
|
20
|
+
def benchmark_cycle(title, input_data_sizes = [1], count = 1, &block)
|
21
|
+
input_data_sizes.each do |size|
|
22
|
+
input_data = generate_input_data(size)
|
23
|
+
measure(title, input_data, count, &block)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def measure(title, input_data, count, &block)
|
28
|
+
input_string = input_data ? " (#{input_data.size}):" : ''
|
29
|
+
$stderr.printf "%-30s ", title + input_string
|
30
|
+
$stderr.puts Benchmark.measure {
|
31
|
+
count.times { block.call(input_data) }
|
32
|
+
}.to_s
|
33
|
+
end
|
34
|
+
|
35
|
+
def generate_input_data(size)
|
36
|
+
Array.new(size) { rand(100000) }
|
37
|
+
end
|
metadata
ADDED
@@ -0,0 +1,51 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: ruby_micro_benchmarks
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Dmitry Plashchynski
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2011-10-20 00:00:00.000000000Z
|
13
|
+
dependencies: []
|
14
|
+
description: A set of Ruby benchmarks for testing several Ruby methods and practice.
|
15
|
+
email: plashchynski@gmail.com
|
16
|
+
executables:
|
17
|
+
- ruby_micro_benchmarks
|
18
|
+
extensions: []
|
19
|
+
extra_rdoc_files: []
|
20
|
+
files:
|
21
|
+
- lib/ruby_micro_benchmarks.rb
|
22
|
+
- benchmarks/array.rb
|
23
|
+
- benchmarks/hash.rb
|
24
|
+
- benchmarks/operators.rb
|
25
|
+
- benchmarks/string.rb
|
26
|
+
- bin/ruby_micro_benchmarks
|
27
|
+
homepage: http://github.com/plashchynski/ruby-micro-benchmarks
|
28
|
+
licenses: []
|
29
|
+
post_install_message:
|
30
|
+
rdoc_options: []
|
31
|
+
require_paths:
|
32
|
+
- lib
|
33
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
34
|
+
none: false
|
35
|
+
requirements:
|
36
|
+
- - ! '>='
|
37
|
+
- !ruby/object:Gem::Version
|
38
|
+
version: '0'
|
39
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
40
|
+
none: false
|
41
|
+
requirements:
|
42
|
+
- - ! '>='
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
version: '0'
|
45
|
+
requirements: []
|
46
|
+
rubyforge_project:
|
47
|
+
rubygems_version: 1.8.11
|
48
|
+
signing_key:
|
49
|
+
specification_version: 3
|
50
|
+
summary: Ruby micro benchmarks
|
51
|
+
test_files: []
|