benchmark-interface 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.
- checksums.yaml +7 -0
- data/.travis.yml +39 -0
- data/Gemfile +2 -0
- data/LICENCE +7 -0
- data/README.md +237 -0
- data/benchmark-interface.gemspec +20 -0
- data/bin/benchmark +15 -0
- data/examples/bench9000.rb +23 -0
- data/examples/bench9000micro.rb +31 -0
- data/examples/benchmark.rb +40 -0
- data/examples/bips.rb +34 -0
- data/examples/clamp.rb +17 -0
- data/examples/interface.rb +13 -0
- data/examples/long.rb +9 -0
- data/examples/mri.rb +15 -0
- data/examples/perfer.rb +25 -0
- data/examples/rbench.rb +46 -0
- data/examples/readme.rb +12 -0
- data/examples/script.rb +14 -0
- data/lib/benchmark-interface.rb +40 -0
- data/lib/benchmark-interface/backends/bench9000.rb +87 -0
- data/lib/benchmark-interface/backends/benchmark.rb +68 -0
- data/lib/benchmark-interface/backends/bips.rb +49 -0
- data/lib/benchmark-interface/backends/simple.rb +38 -0
- data/lib/benchmark-interface/benchmark-set.rb +85 -0
- data/lib/benchmark-interface/benchmark.rb +72 -0
- data/lib/benchmark-interface/frontends/bench9000.rb +21 -0
- data/lib/benchmark-interface/frontends/bench9000micro.rb +19 -0
- data/lib/benchmark-interface/frontends/benchmark.rb +50 -0
- data/lib/benchmark-interface/frontends/bips.rb +40 -0
- data/lib/benchmark-interface/frontends/mri.rb +84 -0
- data/lib/benchmark-interface/frontends/perfer.rb +27 -0
- data/lib/benchmark-interface/frontends/rbench.rb +64 -0
- data/lib/benchmark-interface/require.rb +38 -0
- data/lib/benchmark-interface/run.rb +111 -0
- data/lib/benchmark-interface/version.rb +13 -0
- data/tests/expected/bench9000-bips.txt +8 -0
- data/tests/expected/bench9000-bm.txt +2 -0
- data/tests/expected/bench9000-bmbm.txt +2 -0
- data/tests/expected/bench9000-simple.txt +2 -0
- data/tests/expected/bench9000micro-bips.txt +8 -0
- data/tests/expected/bench9000micro-bm.txt +2 -0
- data/tests/expected/bench9000micro-bmbm.txt +2 -0
- data/tests/expected/bench9000micro-simple.txt +2 -0
- data/tests/expected/benchmark-bips.txt +72 -0
- data/tests/expected/benchmark-bm.txt +12 -0
- data/tests/expected/benchmark-bmbm.txt +12 -0
- data/tests/expected/benchmark-simple.txt +22 -0
- data/tests/expected/bips-bips.txt +2 -0
- data/tests/expected/bips-bm.txt +7 -0
- data/tests/expected/bips-bmbm.txt +7 -0
- data/tests/expected/bips-simple.txt +11 -0
- data/tests/expected/interface-bips.txt +24 -0
- data/tests/expected/interface-bm.txt +4 -0
- data/tests/expected/interface-bmbm.txt +4 -0
- data/tests/expected/interface-simple.txt +6 -0
- data/tests/expected/long-bips.txt +9 -0
- data/tests/expected/long-bm.txt +2 -0
- data/tests/expected/long-bmbm.txt +2 -0
- data/tests/expected/long-simple.txt +2 -0
- data/tests/expected/mri-bips.txt +9 -0
- data/tests/expected/mri-bm.txt +2 -0
- data/tests/expected/mri-bmbm.txt +2 -0
- data/tests/expected/mri-simple.txt +2 -0
- data/tests/expected/perfer-bips.txt +20 -0
- data/tests/expected/perfer-bm.txt +4 -0
- data/tests/expected/perfer-bmbm.txt +4 -0
- data/tests/expected/perfer-simple.txt +5 -0
- data/tests/expected/rbench-bips.txt +42 -0
- data/tests/expected/rbench-bm.txt +7 -0
- data/tests/expected/rbench-bmbm.txt +7 -0
- data/tests/expected/rbench-simple.txt +12 -0
- data/tests/expected/readme-bips.txt +18 -0
- data/tests/expected/readme-bm.txt +3 -0
- data/tests/expected/readme-bmbm.txt +3 -0
- data/tests/expected/readme-simple.txt +4 -0
- data/tests/expected/script-bips.txt +18 -0
- data/tests/expected/script-bm.txt +3 -0
- data/tests/expected/script-bmbm.txt +3 -0
- data/tests/expected/script-simple.txt +4 -0
- data/tests/rewritten/mri.rb +15 -0
- data/tests/tests.rb +73 -0
- data/tests/tools/squash.rb +63 -0
- metadata +130 -0
@@ -0,0 +1,38 @@
|
|
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
|
+
module Kernel
|
10
|
+
|
11
|
+
alias_method :benchmark_interface_original_require, :require
|
12
|
+
|
13
|
+
def require(feature)
|
14
|
+
case feature
|
15
|
+
when 'benchmark'
|
16
|
+
benchmark_interface_original_require 'benchmark-interface/frontends/benchmark'
|
17
|
+
when 'benchmark/ips'
|
18
|
+
benchmark_interface_original_require 'benchmark-interface/frontends/bips'
|
19
|
+
when 'rbench'
|
20
|
+
benchmark_interface_original_require 'benchmark-interface/frontends/rbench'
|
21
|
+
when 'perfer'
|
22
|
+
benchmark_interface_original_require 'benchmark-interface/frontends/perfer'
|
23
|
+
when 'bench9000/harness', 'bench9000/micro-harness'
|
24
|
+
if BenchmarkInterface::Backends::Bench9000.loading_real?
|
25
|
+
# Do nothing
|
26
|
+
elsif feature == 'bench9000/harness'
|
27
|
+
benchmark_interface_original_require 'benchmark-interface/frontends/bench9000'
|
28
|
+
elsif feature == 'bench9000/micro-harness'
|
29
|
+
benchmark_interface_original_require 'benchmark-interface/frontends/bench9000micro'
|
30
|
+
end
|
31
|
+
when 'benchmark-interface'
|
32
|
+
# Already loaded by bin/benchmark
|
33
|
+
else
|
34
|
+
benchmark_interface_original_require feature
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
@@ -0,0 +1,111 @@
|
|
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
|
+
module BenchmarkInterface
|
10
|
+
|
11
|
+
NON_MRI_INDICATORS = %w(
|
12
|
+
Benchmark.measure Benchmark.realtime Benchmark.benchmark Benchmark.bm
|
13
|
+
Benchmark.bmbm RBench.run Benchmark.ips Perfer.session harness_sample
|
14
|
+
)
|
15
|
+
|
16
|
+
def self.run(args)
|
17
|
+
set = BenchmarkInterface::BenchmarkSet.new
|
18
|
+
|
19
|
+
backend = BenchmarkInterface::Backends::Bips
|
20
|
+
names = []
|
21
|
+
|
22
|
+
options = {
|
23
|
+
'--no-scale' => false,
|
24
|
+
'--use-cache' => false,
|
25
|
+
'--show-rewrite' => false,
|
26
|
+
'--cache' => false,
|
27
|
+
'--time' => 10
|
28
|
+
}
|
29
|
+
|
30
|
+
to_load = []
|
31
|
+
|
32
|
+
n = 0
|
33
|
+
while n < args.size
|
34
|
+
arg = args[n]
|
35
|
+
if arg.start_with? '-'
|
36
|
+
case arg
|
37
|
+
when '--help', '-h', '-help', '--version', '-v', '-version'
|
38
|
+
help
|
39
|
+
when '--simple'
|
40
|
+
backend = BenchmarkInterface::Backends::Simple
|
41
|
+
when '--bips'
|
42
|
+
backend = BenchmarkInterface::Backends::Bips
|
43
|
+
when '--bm'
|
44
|
+
backend = BenchmarkInterface::Backends::Bm
|
45
|
+
when '--bmbm'
|
46
|
+
backend = BenchmarkInterface::Backends::BmBm
|
47
|
+
when '--bench9000'
|
48
|
+
backend = BenchmarkInterface::Backends::Bench9000
|
49
|
+
when '--time'
|
50
|
+
options[arg] = Integer(args[n + 1])
|
51
|
+
n += 1
|
52
|
+
else
|
53
|
+
abort "unknown option #{arg}" unless options.keys.include?(arg)
|
54
|
+
options[arg] = true
|
55
|
+
end
|
56
|
+
elsif arg.include?('.rb')
|
57
|
+
to_load.push arg
|
58
|
+
else
|
59
|
+
names.push arg
|
60
|
+
end
|
61
|
+
n += 1
|
62
|
+
end
|
63
|
+
|
64
|
+
to_load.each do |path|
|
65
|
+
source = File.read(path)
|
66
|
+
if NON_MRI_INDICATORS.any? { |t| source.include?(t) } || source =~ /benchmark.*\{/ || source =~ /benchmark.*do/
|
67
|
+
set.load_benchmarks path
|
68
|
+
else
|
69
|
+
set.load_mri_benchmarks path, options
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
set.prepare
|
74
|
+
|
75
|
+
if set.benchmarks.empty?
|
76
|
+
abort 'No benchmarks found!'
|
77
|
+
end
|
78
|
+
|
79
|
+
names.each do |name|
|
80
|
+
unless set.benchmark(name)
|
81
|
+
abort "Unknown benchmark #{name}"
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
names = set.benchmarks.map(&:name) if names.empty?
|
86
|
+
|
87
|
+
backend.run set, names, options
|
88
|
+
end
|
89
|
+
|
90
|
+
def self.help
|
91
|
+
puts "Benchmark-Interface #{VERSION}"
|
92
|
+
puts
|
93
|
+
puts 'benchmark benchmark-files.rb... [benchmark names...] [options]'
|
94
|
+
puts
|
95
|
+
puts 'Backends:'
|
96
|
+
puts ' --simple'
|
97
|
+
puts ' --bips (default)'
|
98
|
+
puts ' --bm'
|
99
|
+
puts ' --bmbm'
|
100
|
+
puts ' --bench9000'
|
101
|
+
puts
|
102
|
+
puts 'Options:'
|
103
|
+
puts ' --no-scale Don\'t scale benchmarks for backends that expects benchmarks to take about a second'
|
104
|
+
puts ' --show-rewrite Show rewritten MRI benchmarks'
|
105
|
+
puts ' --cache Cache MRI rewrites'
|
106
|
+
puts ' --use-cache Use cached MRI rewrites'
|
107
|
+
puts ' --time n Run for n seconds, if the backend supports that'
|
108
|
+
exit 1
|
109
|
+
end
|
110
|
+
|
111
|
+
end
|
@@ -0,0 +1,13 @@
|
|
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
|
+
module BenchmarkInterface
|
10
|
+
|
11
|
+
VERSION = '0.1'
|
12
|
+
|
13
|
+
end
|
@@ -0,0 +1,8 @@
|
|
1
|
+
Warming up --------------------------------------
|
2
|
+
bench9000 XXX i/100ms
|
3
|
+
bench9000 XXX i/100ms
|
4
|
+
bench9000 XXX i/100ms
|
5
|
+
Calculating -------------------------------------
|
6
|
+
bench9000 XXX (XXX%) i/s - XXX
|
7
|
+
bench9000 XXX (XXX%) i/s - XXX
|
8
|
+
bench9000 XXX (XXX%) i/s - XXX
|
@@ -0,0 +1,8 @@
|
|
1
|
+
Warming up --------------------------------------
|
2
|
+
bench9000micro XXX i/100ms
|
3
|
+
bench9000micro XXX i/100ms
|
4
|
+
bench9000micro XXX i/100ms
|
5
|
+
Calculating -------------------------------------
|
6
|
+
bench9000micro XXX (XXX%) i/s - XXX
|
7
|
+
bench9000micro XXX (XXX%) i/s - XXX
|
8
|
+
bench9000micro XXX (XXX%) i/s - XXX
|
@@ -0,0 +1,72 @@
|
|
1
|
+
Warming up --------------------------------------
|
2
|
+
benchmark:XXX XXX i/100ms
|
3
|
+
clamp_a1 XXX i/100ms
|
4
|
+
benchmark:XXX XXX i/100ms
|
5
|
+
clamp_a1 XXX i/100ms
|
6
|
+
clamp_b1 XXX i/100ms
|
7
|
+
benchmark:XXX XXX i/100ms
|
8
|
+
clamp_a3 XXX i/100ms
|
9
|
+
clamp_b3 XXX i/100ms
|
10
|
+
benchmark:XXX XXX i/100ms
|
11
|
+
clamp_a4 XXX i/100ms
|
12
|
+
clamp_b4 XXX i/100ms
|
13
|
+
benchmark:XXX XXX i/100ms
|
14
|
+
clamp_a1 XXX i/100ms
|
15
|
+
benchmark:XXX XXX i/100ms
|
16
|
+
clamp_a1 XXX i/100ms
|
17
|
+
clamp_b1 XXX i/100ms
|
18
|
+
benchmark:XXX XXX i/100ms
|
19
|
+
clamp_a3 XXX i/100ms
|
20
|
+
clamp_b3 XXX i/100ms
|
21
|
+
benchmark:XXX XXX i/100ms
|
22
|
+
clamp_a4 XXX i/100ms
|
23
|
+
clamp_b4 XXX i/100ms
|
24
|
+
benchmark:XXX XXX i/100ms
|
25
|
+
clamp_a1 XXX i/100ms
|
26
|
+
benchmark:XXX XXX i/100ms
|
27
|
+
clamp_a1 XXX i/100ms
|
28
|
+
clamp_b1 XXX i/100ms
|
29
|
+
benchmark:XXX XXX i/100ms
|
30
|
+
clamp_a3 XXX i/100ms
|
31
|
+
clamp_b3 XXX i/100ms
|
32
|
+
benchmark:XXX XXX i/100ms
|
33
|
+
clamp_a4 XXX i/100ms
|
34
|
+
clamp_b4 XXX i/100ms
|
35
|
+
Calculating -------------------------------------
|
36
|
+
benchmark:XXX XXX (XXX%) i/s - XXX
|
37
|
+
clamp_a1 XXX (XXX%) i/s - XXX
|
38
|
+
benchmark:XXX XXX (XXX%) i/s - XXX
|
39
|
+
clamp_a1 XXX (XXX%) i/s - XXX
|
40
|
+
clamp_b1 XXX (XXX%) i/s - XXX
|
41
|
+
benchmark:XXX XXX (XXX%) i/s - XXX
|
42
|
+
clamp_a3 XXX (XXX%) i/s - XXX
|
43
|
+
clamp_b3 XXX (XXX%) i/s - XXX
|
44
|
+
benchmark:XXX XXX (XXX%) i/s - XXX
|
45
|
+
clamp_a4 XXX (XXX%) i/s - XXX
|
46
|
+
clamp_b4 XXX (XXX%) i/s - XXX
|
47
|
+
benchmark:XXX XXX (XXX%) i/s - XXX
|
48
|
+
clamp_a1 XXX (XXX%) i/s - XXX
|
49
|
+
benchmark:XXX XXX (XXX%) i/s - XXX
|
50
|
+
clamp_a1 XXX (XXX%) i/s - XXX
|
51
|
+
clamp_b1 XXX (XXX%) i/s - XXX
|
52
|
+
benchmark:XXX XXX (XXX%) i/s - XXX
|
53
|
+
clamp_a3 XXX (XXX%) i/s - XXX
|
54
|
+
clamp_b3 XXX (XXX%) i/s - XXX
|
55
|
+
benchmark:XXX XXX (XXX%) i/s - XXX
|
56
|
+
clamp_a4 XXX (XXX%) i/s - XXX
|
57
|
+
clamp_b4 XXX (XXX%) i/s - XXX
|
58
|
+
benchmark:XXX XXX (XXX%) i/s - XXX
|
59
|
+
clamp_a1 XXX (XXX%) i/s - XXX
|
60
|
+
benchmark:XXX XXX (XXX%) i/s - XXX
|
61
|
+
clamp_a1 XXX (XXX%) i/s - XXX
|
62
|
+
clamp_b1 XXX (XXX%) i/s - XXX
|
63
|
+
benchmark:XXX XXX (XXX%) i/s - XXX
|
64
|
+
clamp_a3 XXX (XXX%) i/s - XXX
|
65
|
+
clamp_b3 XXX (XXX%) i/s - XXX
|
66
|
+
benchmark:XXX XXX (XXX%) i/s - XXX
|
67
|
+
clamp_a4 XXX (XXX%) i/s - XXX
|
68
|
+
clamp_b4 XXX (XXX%) i/s - XXX
|
69
|
+
|
70
|
+
Comparison:
|
71
|
+
XXX
|
72
|
+
|
@@ -0,0 +1,12 @@
|
|
1
|
+
user system total real
|
2
|
+
benchmark:XXX XXX XXX XXX (XXX)
|
3
|
+
clamp_a1 XXX XXX XXX (XXX)
|
4
|
+
benchmark:XXX XXX XXX XXX (XXX)
|
5
|
+
clamp_a1 XXX XXX XXX (XXX)
|
6
|
+
clamp_b1 XXX XXX XXX (XXX)
|
7
|
+
benchmark:XXX XXX XXX XXX (XXX)
|
8
|
+
clamp_a3 XXX XXX XXX (XXX)
|
9
|
+
clamp_b3 XXX XXX XXX (XXX)
|
10
|
+
benchmark:XXX XXX XXX XXX (XXX)
|
11
|
+
clamp_a4 XXX XXX XXX (XXX)
|
12
|
+
clamp_b4 XXX XXX XXX (XXX)
|
@@ -0,0 +1,12 @@
|
|
1
|
+
user system total real
|
2
|
+
benchmark:XXX XXX XXX XXX (XXX)
|
3
|
+
clamp_a1 XXX XXX XXX (XXX)
|
4
|
+
benchmark:XXX XXX XXX XXX (XXX)
|
5
|
+
clamp_a1 XXX XXX XXX (XXX)
|
6
|
+
clamp_b1 XXX XXX XXX (XXX)
|
7
|
+
benchmark:XXX XXX XXX XXX (XXX)
|
8
|
+
clamp_a3 XXX XXX XXX (XXX)
|
9
|
+
clamp_b3 XXX XXX XXX (XXX)
|
10
|
+
benchmark:XXX XXX XXX XXX (XXX)
|
11
|
+
clamp_a4 XXX XXX XXX (XXX)
|
12
|
+
clamp_b4 XXX XXX XXX (XXX)
|
@@ -0,0 +1,7 @@
|
|
1
|
+
This benchmark set contains blocks that want a number of iterations - running all iterations XXX times
|
2
|
+
user system total real
|
3
|
+
bips:XXX XXX XXX XXX (XXX)
|
4
|
+
clamp_a1 XXX XXX XXX (XXX)
|
5
|
+
clamp_b1 XXX XXX XXX (XXX)
|
6
|
+
clamp_a2 XXX XXX XXX (XXX)
|
7
|
+
clamp_a3 XXX XXX XXX (XXX)
|
@@ -0,0 +1,7 @@
|
|
1
|
+
This benchmark set contains blocks that want a number of iterations - running all iterations XXX times
|
2
|
+
user system total real
|
3
|
+
bips:XXX XXX XXX XXX (XXX)
|
4
|
+
clamp_a1 XXX XXX XXX (XXX)
|
5
|
+
clamp_b1 XXX XXX XXX (XXX)
|
6
|
+
clamp_a2 XXX XXX XXX (XXX)
|
7
|
+
clamp_a3 XXX XXX XXX (XXX)
|
@@ -0,0 +1,24 @@
|
|
1
|
+
Warming up --------------------------------------
|
2
|
+
interface:XXX XXX i/100ms
|
3
|
+
clamp_a XXX i/100ms
|
4
|
+
clamp_b XXX i/100ms
|
5
|
+
interface:XXX XXX i/100ms
|
6
|
+
clamp_a XXX i/100ms
|
7
|
+
clamp_b XXX i/100ms
|
8
|
+
interface:XXX XXX i/100ms
|
9
|
+
clamp_a XXX i/100ms
|
10
|
+
clamp_b XXX i/100ms
|
11
|
+
Calculating -------------------------------------
|
12
|
+
interface:XXX XXX (XXX%) i/s - XXX
|
13
|
+
clamp_a XXX (XXX%) i/s - XXX
|
14
|
+
clamp_b XXX (XXX%) i/s - XXX
|
15
|
+
interface:XXX XXX (XXX%) i/s - XXX
|
16
|
+
clamp_a XXX (XXX%) i/s - XXX
|
17
|
+
clamp_b XXX (XXX%) i/s - XXX
|
18
|
+
interface:XXX XXX (XXX%) i/s - XXX
|
19
|
+
clamp_a XXX (XXX%) i/s - XXX
|
20
|
+
clamp_b XXX (XXX%) i/s - XXX
|
21
|
+
|
22
|
+
Comparison:
|
23
|
+
XXX
|
24
|
+
|
@@ -0,0 +1,9 @@
|
|
1
|
+
These are long benchmarks - we're increasing warmup and sample time
|
2
|
+
Warming up --------------------------------------
|
3
|
+
sleep XXX i/100ms
|
4
|
+
sleep XXX i/100ms
|
5
|
+
sleep XXX i/100ms
|
6
|
+
Calculating -------------------------------------
|
7
|
+
sleep XXX (XXX%) i/s - XXX
|
8
|
+
sleep XXX (XXX%) i/s - XXX
|
9
|
+
sleep XXX (XXX%) i/s - XXX
|
@@ -0,0 +1,9 @@
|
|
1
|
+
These are long benchmarks - we're increasing warmup and sample time
|
2
|
+
Warming up --------------------------------------
|
3
|
+
mri XXX i/100ms
|
4
|
+
mri XXX i/100ms
|
5
|
+
mri XXX i/100ms
|
6
|
+
Calculating -------------------------------------
|
7
|
+
mri XXX (XXX%) i/s - XXX
|
8
|
+
mri XXX (XXX%) i/s - XXX
|
9
|
+
mri XXX (XXX%) i/s - XXX
|