benchmark-interface 0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (84) hide show
  1. checksums.yaml +7 -0
  2. data/.travis.yml +39 -0
  3. data/Gemfile +2 -0
  4. data/LICENCE +7 -0
  5. data/README.md +237 -0
  6. data/benchmark-interface.gemspec +20 -0
  7. data/bin/benchmark +15 -0
  8. data/examples/bench9000.rb +23 -0
  9. data/examples/bench9000micro.rb +31 -0
  10. data/examples/benchmark.rb +40 -0
  11. data/examples/bips.rb +34 -0
  12. data/examples/clamp.rb +17 -0
  13. data/examples/interface.rb +13 -0
  14. data/examples/long.rb +9 -0
  15. data/examples/mri.rb +15 -0
  16. data/examples/perfer.rb +25 -0
  17. data/examples/rbench.rb +46 -0
  18. data/examples/readme.rb +12 -0
  19. data/examples/script.rb +14 -0
  20. data/lib/benchmark-interface.rb +40 -0
  21. data/lib/benchmark-interface/backends/bench9000.rb +87 -0
  22. data/lib/benchmark-interface/backends/benchmark.rb +68 -0
  23. data/lib/benchmark-interface/backends/bips.rb +49 -0
  24. data/lib/benchmark-interface/backends/simple.rb +38 -0
  25. data/lib/benchmark-interface/benchmark-set.rb +85 -0
  26. data/lib/benchmark-interface/benchmark.rb +72 -0
  27. data/lib/benchmark-interface/frontends/bench9000.rb +21 -0
  28. data/lib/benchmark-interface/frontends/bench9000micro.rb +19 -0
  29. data/lib/benchmark-interface/frontends/benchmark.rb +50 -0
  30. data/lib/benchmark-interface/frontends/bips.rb +40 -0
  31. data/lib/benchmark-interface/frontends/mri.rb +84 -0
  32. data/lib/benchmark-interface/frontends/perfer.rb +27 -0
  33. data/lib/benchmark-interface/frontends/rbench.rb +64 -0
  34. data/lib/benchmark-interface/require.rb +38 -0
  35. data/lib/benchmark-interface/run.rb +111 -0
  36. data/lib/benchmark-interface/version.rb +13 -0
  37. data/tests/expected/bench9000-bips.txt +8 -0
  38. data/tests/expected/bench9000-bm.txt +2 -0
  39. data/tests/expected/bench9000-bmbm.txt +2 -0
  40. data/tests/expected/bench9000-simple.txt +2 -0
  41. data/tests/expected/bench9000micro-bips.txt +8 -0
  42. data/tests/expected/bench9000micro-bm.txt +2 -0
  43. data/tests/expected/bench9000micro-bmbm.txt +2 -0
  44. data/tests/expected/bench9000micro-simple.txt +2 -0
  45. data/tests/expected/benchmark-bips.txt +72 -0
  46. data/tests/expected/benchmark-bm.txt +12 -0
  47. data/tests/expected/benchmark-bmbm.txt +12 -0
  48. data/tests/expected/benchmark-simple.txt +22 -0
  49. data/tests/expected/bips-bips.txt +2 -0
  50. data/tests/expected/bips-bm.txt +7 -0
  51. data/tests/expected/bips-bmbm.txt +7 -0
  52. data/tests/expected/bips-simple.txt +11 -0
  53. data/tests/expected/interface-bips.txt +24 -0
  54. data/tests/expected/interface-bm.txt +4 -0
  55. data/tests/expected/interface-bmbm.txt +4 -0
  56. data/tests/expected/interface-simple.txt +6 -0
  57. data/tests/expected/long-bips.txt +9 -0
  58. data/tests/expected/long-bm.txt +2 -0
  59. data/tests/expected/long-bmbm.txt +2 -0
  60. data/tests/expected/long-simple.txt +2 -0
  61. data/tests/expected/mri-bips.txt +9 -0
  62. data/tests/expected/mri-bm.txt +2 -0
  63. data/tests/expected/mri-bmbm.txt +2 -0
  64. data/tests/expected/mri-simple.txt +2 -0
  65. data/tests/expected/perfer-bips.txt +20 -0
  66. data/tests/expected/perfer-bm.txt +4 -0
  67. data/tests/expected/perfer-bmbm.txt +4 -0
  68. data/tests/expected/perfer-simple.txt +5 -0
  69. data/tests/expected/rbench-bips.txt +42 -0
  70. data/tests/expected/rbench-bm.txt +7 -0
  71. data/tests/expected/rbench-bmbm.txt +7 -0
  72. data/tests/expected/rbench-simple.txt +12 -0
  73. data/tests/expected/readme-bips.txt +18 -0
  74. data/tests/expected/readme-bm.txt +3 -0
  75. data/tests/expected/readme-bmbm.txt +3 -0
  76. data/tests/expected/readme-simple.txt +4 -0
  77. data/tests/expected/script-bips.txt +18 -0
  78. data/tests/expected/script-bm.txt +3 -0
  79. data/tests/expected/script-bmbm.txt +3 -0
  80. data/tests/expected/script-simple.txt +4 -0
  81. data/tests/rewritten/mri.rb +15 -0
  82. data/tests/tests.rb +73 -0
  83. data/tests/tools/squash.rb +63 -0
  84. metadata +130 -0
@@ -0,0 +1,2 @@
1
+ user system total real
2
+ mri XXX XXX XXX (XXX)
@@ -0,0 +1,2 @@
1
+ user system total real
2
+ mri XXX XXX XXX (XXX)
@@ -0,0 +1,2 @@
1
+ mri
2
+ XXX
@@ -0,0 +1,20 @@
1
+ This benchmark set contains blocks that want a number of iterations - running all iterations XXX times
2
+ These are long benchmarks - we're increasing warmup and sample time
3
+ Warming up --------------------------------------
4
+ clamp_a XXX i/100ms
5
+ clamp_b XXX i/100ms
6
+ clamp_a XXX i/100ms
7
+ clamp_b XXX i/100ms
8
+ clamp_a XXX i/100ms
9
+ clamp_b XXX i/100ms
10
+ Calculating -------------------------------------
11
+ clamp_a XXX (XXX%) i/s - XXX
12
+ clamp_b XXX (XXX%) i/s - XXX
13
+ clamp_a XXX (XXX%) i/s - XXX
14
+ clamp_b XXX (XXX%) i/s - XXX
15
+ clamp_a XXX (XXX%) i/s - XXX
16
+ clamp_b XXX (XXX%) i/s - XXX
17
+
18
+ Comparison:
19
+ XXX
20
+
@@ -0,0 +1,4 @@
1
+ This benchmark set contains blocks that want a number of iterations - running all iterations XXX times
2
+ user system total real
3
+ clamp_a XXX XXX XXX (XXX)
4
+ clamp_b XXX XXX XXX (XXX)
@@ -0,0 +1,4 @@
1
+ This benchmark set contains blocks that want a number of iterations - running all iterations XXX times
2
+ user system total real
3
+ clamp_a XXX XXX XXX (XXX)
4
+ clamp_b XXX XXX XXX (XXX)
@@ -0,0 +1,5 @@
1
+ This benchmark set contains blocks that want a number of iterations - running all iterations XXX times
2
+ clamp_a
3
+ XXX
4
+ clamp_b
5
+ XXX
@@ -0,0 +1,42 @@
1
+ Warming up --------------------------------------
2
+ clamp_a1 XXX i/100ms
3
+ clamp_b1 XXX i/100ms
4
+ clamp2-clamp_a2-one XXX i/100ms
5
+ clamp2-clamp_a2-two XXX i/100ms
6
+ clamp2-clamp_b2-one XXX i/100ms
7
+ clamp2-clamp_b2-two XXX i/100ms
8
+ clamp_a1 XXX i/100ms
9
+ clamp_b1 XXX i/100ms
10
+ clamp2-clamp_a2-one XXX i/100ms
11
+ clamp2-clamp_a2-two XXX i/100ms
12
+ clamp2-clamp_b2-one XXX i/100ms
13
+ clamp2-clamp_b2-two XXX i/100ms
14
+ clamp_a1 XXX i/100ms
15
+ clamp_b1 XXX i/100ms
16
+ clamp2-clamp_a2-one XXX i/100ms
17
+ clamp2-clamp_a2-two XXX i/100ms
18
+ clamp2-clamp_b2-one XXX i/100ms
19
+ clamp2-clamp_b2-two XXX i/100ms
20
+ Calculating -------------------------------------
21
+ clamp_a1 XXX (XXX%) i/s - XXX
22
+ clamp_b1 XXX (XXX%) i/s - XXX
23
+ clamp2-clamp_a2-one XXX (XXX%) i/s - XXX
24
+ clamp2-clamp_a2-two XXX (XXX%) i/s - XXX
25
+ clamp2-clamp_b2-one XXX (XXX%) i/s - XXX
26
+ clamp2-clamp_b2-two XXX (XXX%) i/s - XXX
27
+ clamp_a1 XXX (XXX%) i/s - XXX
28
+ clamp_b1 XXX (XXX%) i/s - XXX
29
+ clamp2-clamp_a2-one XXX (XXX%) i/s - XXX
30
+ clamp2-clamp_a2-two XXX (XXX%) i/s - XXX
31
+ clamp2-clamp_b2-one XXX (XXX%) i/s - XXX
32
+ clamp2-clamp_b2-two XXX (XXX%) i/s - XXX
33
+ clamp_a1 XXX (XXX%) i/s - XXX
34
+ clamp_b1 XXX (XXX%) i/s - XXX
35
+ clamp2-clamp_a2-one XXX (XXX%) i/s - XXX
36
+ clamp2-clamp_a2-two XXX (XXX%) i/s - XXX
37
+ clamp2-clamp_b2-one XXX (XXX%) i/s - XXX
38
+ clamp2-clamp_b2-two XXX (XXX%) i/s - XXX
39
+
40
+ Comparison:
41
+ XXX
42
+
@@ -0,0 +1,7 @@
1
+ user system total real
2
+ clamp_a1 XXX XXX XXX (XXX)
3
+ clamp_b1 XXX XXX XXX (XXX)
4
+ clamp2-clamp_a2-one XXX XXX XXX (XXX)
5
+ clamp2-clamp_a2-two XXX XXX XXX (XXX)
6
+ clamp2-clamp_b2-one XXX XXX XXX (XXX)
7
+ clamp2-clamp_b2-two XXX XXX XXX (XXX)
@@ -0,0 +1,7 @@
1
+ user system total real
2
+ clamp_a1 XXX XXX XXX (XXX)
3
+ clamp_b1 XXX XXX XXX (XXX)
4
+ clamp2-clamp_a2-one XXX XXX XXX (XXX)
5
+ clamp2-clamp_a2-two XXX XXX XXX (XXX)
6
+ clamp2-clamp_b2-one XXX XXX XXX (XXX)
7
+ clamp2-clamp_b2-two XXX XXX XXX (XXX)
@@ -0,0 +1,12 @@
1
+ clamp_a1
2
+ XXX
3
+ clamp_b1
4
+ XXX
5
+ clamp2-clamp_a2-one
6
+ XXX
7
+ clamp2-clamp_a2-two
8
+ XXX
9
+ clamp2-clamp_b2-one
10
+ XXX
11
+ clamp2-clamp_b2-two
12
+ XXX
@@ -0,0 +1,18 @@
1
+ Warming up --------------------------------------
2
+ mul XXX i/100ms
3
+ pow XXX i/100ms
4
+ mul XXX i/100ms
5
+ pow XXX i/100ms
6
+ mul XXX i/100ms
7
+ pow XXX i/100ms
8
+ Calculating -------------------------------------
9
+ mul XXX (XXX%) i/s - XXX
10
+ pow XXX (XXX%) i/s - XXX
11
+ mul XXX (XXX%) i/s - XXX
12
+ pow XXX (XXX%) i/s - XXX
13
+ mul XXX (XXX%) i/s - XXX
14
+ pow XXX (XXX%) i/s - XXX
15
+
16
+ Comparison:
17
+ XXX
18
+
@@ -0,0 +1,3 @@
1
+ user system total real
2
+ mul XXX XXX XXX (XXX)
3
+ pow XXX XXX XXX (XXX)
@@ -0,0 +1,3 @@
1
+ user system total real
2
+ mul XXX XXX XXX (XXX)
3
+ pow XXX XXX XXX (XXX)
@@ -0,0 +1,4 @@
1
+ mul
2
+ XXX
3
+ pow
4
+ XXX
@@ -0,0 +1,18 @@
1
+ Warming up --------------------------------------
2
+ clamp_a XXX i/100ms
3
+ clamp_b XXX i/100ms
4
+ clamp_a XXX i/100ms
5
+ clamp_b XXX i/100ms
6
+ clamp_a XXX i/100ms
7
+ clamp_b XXX i/100ms
8
+ Calculating -------------------------------------
9
+ clamp_a XXX (XXX%) i/s - XXX
10
+ clamp_b XXX (XXX%) i/s - XXX
11
+ clamp_a XXX (XXX%) i/s - XXX
12
+ clamp_b XXX (XXX%) i/s - XXX
13
+ clamp_a XXX (XXX%) i/s - XXX
14
+ clamp_b XXX (XXX%) i/s - XXX
15
+
16
+ Comparison:
17
+ XXX
18
+
@@ -0,0 +1,3 @@
1
+ user system total real
2
+ clamp_a XXX XXX XXX (XXX)
3
+ clamp_b XXX XXX XXX (XXX)
@@ -0,0 +1,3 @@
1
+ user system total real
2
+ clamp_a XXX XXX XXX (XXX)
3
+ clamp_b XXX XXX XXX (XXX)
@@ -0,0 +1,4 @@
1
+ clamp_a
2
+ XXX
3
+ clamp_b
4
+ XXX
@@ -0,0 +1,15 @@
1
+ # Copyright (c) 2016 Oracle and/or its affiliates. All rights reserved. This
2
+ # code is released under a tri EPL/GPL/LGPL license. You can use it,
3
+ # redistribute it and/or modify it under the terms of the:
4
+ #
5
+ # Eclipse Public License version 1.0
6
+ # GNU General Public License version 2
7
+ # GNU Lesser General Public License version 2.1
8
+
9
+ array = [1, 2, 3]
10
+
11
+ i = 0
12
+ BenchmarkInterface.benchmark { i = 0; while i < 30_000_000
13
+ i += 1
14
+ array.length
15
+ end }
@@ -0,0 +1,73 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # Copyright (c) 2016 Oracle and/or its affiliates. All rights reserved. This
4
+ # code is released under a tri EPL/GPL/LGPL license. You can use it,
5
+ # redistribute it and/or modify it under the terms of the:
6
+ #
7
+ # Eclipse Public License version 1.0
8
+ # GNU General Public License version 2
9
+ # GNU Lesser General Public License version 2.1
10
+
11
+ test_ruby = ENV['TEST_RUBY'] || 'ruby'
12
+ version = RUBY_VERSION.split('.').first(2).map(&:to_i)
13
+ earlier_than_21 = version[0] < 2 || (version[0] == 2 && version[1] < 1) || test_ruby.include?('topaz')
14
+
15
+ regenerate = ARGV.delete('--regenerate')
16
+ resquash = ARGV.delete('--resquash')
17
+
18
+ examples = Dir.glob('examples/*.rb')
19
+ examples.delete('examples/clamp.rb')
20
+
21
+ if ARGV.empty?
22
+ backends = ['--simple', '--bm', '--bmbm', '--bips']
23
+ else
24
+ backends = ARGV
25
+ end
26
+
27
+ failed = false
28
+
29
+ test_example_backend = Proc.new do |example, backend, options|
30
+ puts "$ #{example} #{backend} #{options}"
31
+
32
+ expected_file = "tests/expected/#{File.basename(example, '.rb')}-#{backend[2..-1]}.txt"
33
+
34
+ if resquash
35
+ resquashed = `cat #{expected_file} | tests/tools/squash.rb`
36
+ File.write expected_file, resquashed
37
+ else
38
+ actual = `#{test_ruby} bin/benchmark #{example} #{backend} #{options} | tee /dev/tty | tests/tools/squash.rb`
39
+
40
+ if regenerate
41
+ File.write expected_file, actual
42
+ else
43
+ expected = File.read expected_file
44
+ if expected != actual
45
+ puts 'not as expected!'
46
+ puts 'expected:'
47
+ puts expected
48
+ puts 'actual:'
49
+ puts actual
50
+ failed = true
51
+ end
52
+ end
53
+ end
54
+ end
55
+
56
+ examples.each do |example|
57
+ backends.each do |backend|
58
+ if example == 'examples/mri.rb'
59
+ test_example_backend.call example, backend, '' unless earlier_than_21
60
+
61
+ begin
62
+ `cp tests/rewritten/mri.rb mri-rewrite-cache.rb`
63
+ test_example_backend.call example, backend, '--use-cache'
64
+ ensure
65
+ `rm -f mri-rewrite-cache.rb`
66
+ end
67
+ else
68
+ test_example_backend.call example, backend, ''
69
+ end
70
+ end
71
+ end
72
+
73
+ abort if failed
@@ -0,0 +1,63 @@
1
+ #!/usr/bin/env ruby
2
+ # encoding: UTF-8
3
+
4
+ # Copyright (c) 2016 Oracle and/or its affiliates. All rights reserved. This
5
+ # code is released under a tri EPL/GPL/LGPL license. You can use it,
6
+ # redistribute it and/or modify it under the terms of the:
7
+ #
8
+ # Eclipse Public License version 1.0
9
+ # GNU General Public License version 2
10
+ # GNU Lesser General Public License version 2.1
11
+
12
+ state = :normal
13
+ last_xxx = false
14
+
15
+ ARGF.set_encoding(Encoding::UTF_8) if defined?(Encoding)
16
+
17
+ ARGF.each_line do |line|
18
+
19
+ # Squash multiple whitespace into a single space
20
+ line.gsub! /\s+/, ' '
21
+
22
+ # Squash any numbers into XXX
23
+ line.gsub! /\b\d+(\.\d+)?[kMBTQs]?\b/, 'XXX'
24
+
25
+ # Squash ±
26
+ line.gsub! /±\s*/, ''
27
+
28
+ # Squash bips' XXX in XXX to just XXX
29
+ line.gsub! /XXX in XXX/, 'XXX'
30
+
31
+ # Squash whitespace out of ( XXX )
32
+ line.gsub! /\(\s*XXX\s*\)/, '(XXX)'
33
+
34
+ # Remove
35
+ if line.strip == 'These are short benchmarks - we\'re running each XXX times so they take about a second'
36
+ line = nil
37
+ end
38
+
39
+ # Turn any lines following Comparison: into XXX as the order can change
40
+ if state == :normal
41
+ if line && line.strip == 'Comparison:'
42
+ state = :comparison
43
+ end
44
+ elsif state == :comparison
45
+ if line && line.strip.empty?
46
+ state = :normal
47
+ else
48
+ line = ' XXX'
49
+ end
50
+ end
51
+
52
+ if line && line.strip == 'XXX'
53
+ if last_xxx
54
+ line = nil
55
+ else
56
+ last_xxx = true
57
+ end
58
+ else
59
+ last_xxx = false
60
+ end
61
+
62
+ puts line if line
63
+ end
metadata ADDED
@@ -0,0 +1,130 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: benchmark-interface
3
+ version: !ruby/object:Gem::Version
4
+ version: '0.1'
5
+ platform: ruby
6
+ authors:
7
+ - Chris Seaton
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-05-19 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: A new format for writing Ruby benchmarks, and a tool that lets you run
14
+ benchmarks written in many formats with many different benchmarking tools
15
+ email:
16
+ - chris@chrisseaton.com
17
+ executables:
18
+ - benchmark
19
+ extensions: []
20
+ extra_rdoc_files: []
21
+ files:
22
+ - ".travis.yml"
23
+ - Gemfile
24
+ - LICENCE
25
+ - README.md
26
+ - benchmark-interface.gemspec
27
+ - bin/benchmark
28
+ - examples/bench9000.rb
29
+ - examples/bench9000micro.rb
30
+ - examples/benchmark.rb
31
+ - examples/bips.rb
32
+ - examples/clamp.rb
33
+ - examples/interface.rb
34
+ - examples/long.rb
35
+ - examples/mri.rb
36
+ - examples/perfer.rb
37
+ - examples/rbench.rb
38
+ - examples/readme.rb
39
+ - examples/script.rb
40
+ - lib/benchmark-interface.rb
41
+ - lib/benchmark-interface/backends/bench9000.rb
42
+ - lib/benchmark-interface/backends/benchmark.rb
43
+ - lib/benchmark-interface/backends/bips.rb
44
+ - lib/benchmark-interface/backends/simple.rb
45
+ - lib/benchmark-interface/benchmark-set.rb
46
+ - lib/benchmark-interface/benchmark.rb
47
+ - lib/benchmark-interface/frontends/bench9000.rb
48
+ - lib/benchmark-interface/frontends/bench9000micro.rb
49
+ - lib/benchmark-interface/frontends/benchmark.rb
50
+ - lib/benchmark-interface/frontends/bips.rb
51
+ - lib/benchmark-interface/frontends/mri.rb
52
+ - lib/benchmark-interface/frontends/perfer.rb
53
+ - lib/benchmark-interface/frontends/rbench.rb
54
+ - lib/benchmark-interface/require.rb
55
+ - lib/benchmark-interface/run.rb
56
+ - lib/benchmark-interface/version.rb
57
+ - tests/expected/bench9000-bips.txt
58
+ - tests/expected/bench9000-bm.txt
59
+ - tests/expected/bench9000-bmbm.txt
60
+ - tests/expected/bench9000-simple.txt
61
+ - tests/expected/bench9000micro-bips.txt
62
+ - tests/expected/bench9000micro-bm.txt
63
+ - tests/expected/bench9000micro-bmbm.txt
64
+ - tests/expected/bench9000micro-simple.txt
65
+ - tests/expected/benchmark-bips.txt
66
+ - tests/expected/benchmark-bm.txt
67
+ - tests/expected/benchmark-bmbm.txt
68
+ - tests/expected/benchmark-simple.txt
69
+ - tests/expected/bips-bips.txt
70
+ - tests/expected/bips-bm.txt
71
+ - tests/expected/bips-bmbm.txt
72
+ - tests/expected/bips-simple.txt
73
+ - tests/expected/interface-bips.txt
74
+ - tests/expected/interface-bm.txt
75
+ - tests/expected/interface-bmbm.txt
76
+ - tests/expected/interface-simple.txt
77
+ - tests/expected/long-bips.txt
78
+ - tests/expected/long-bm.txt
79
+ - tests/expected/long-bmbm.txt
80
+ - tests/expected/long-simple.txt
81
+ - tests/expected/mri-bips.txt
82
+ - tests/expected/mri-bm.txt
83
+ - tests/expected/mri-bmbm.txt
84
+ - tests/expected/mri-simple.txt
85
+ - tests/expected/perfer-bips.txt
86
+ - tests/expected/perfer-bm.txt
87
+ - tests/expected/perfer-bmbm.txt
88
+ - tests/expected/perfer-simple.txt
89
+ - tests/expected/rbench-bips.txt
90
+ - tests/expected/rbench-bm.txt
91
+ - tests/expected/rbench-bmbm.txt
92
+ - tests/expected/rbench-simple.txt
93
+ - tests/expected/readme-bips.txt
94
+ - tests/expected/readme-bm.txt
95
+ - tests/expected/readme-bmbm.txt
96
+ - tests/expected/readme-simple.txt
97
+ - tests/expected/script-bips.txt
98
+ - tests/expected/script-bm.txt
99
+ - tests/expected/script-bmbm.txt
100
+ - tests/expected/script-simple.txt
101
+ - tests/rewritten/mri.rb
102
+ - tests/tests.rb
103
+ - tests/tools/squash.rb
104
+ homepage: https://github.com/jruby/benchmark-interface
105
+ licenses:
106
+ - EPL-1.0
107
+ - GPL-2.0
108
+ - LGPL-2.1
109
+ metadata: {}
110
+ post_install_message:
111
+ rdoc_options: []
112
+ require_paths:
113
+ - lib
114
+ required_ruby_version: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - ">="
117
+ - !ruby/object:Gem::Version
118
+ version: '0'
119
+ required_rubygems_version: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ version: '0'
124
+ requirements: []
125
+ rubyforge_project:
126
+ rubygems_version: 2.5.1
127
+ signing_key:
128
+ specification_version: 4
129
+ summary: One Ruby benchmarking interface to rule them all
130
+ test_files: []