benchmark-interface 0.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|