benchmark_driver 0.16.0 → 0.16.2
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 +4 -4
- data/CHANGELOG.md +8 -0
- data/exe/benchmark-driver +5 -0
- data/lib/benchmark_driver/chruby.rb +27 -0
- data/lib/benchmark_driver/output/simple.rb +8 -1
- data/lib/benchmark_driver/version.rb +1 -1
- data/lib/benchmark_driver.rb +1 -0
- metadata +6 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d12d73c435a4bc6f93f92bfa7facf60c4b7badc985249f5ccb71b77137454106
|
4
|
+
data.tar.gz: 53d4c9ffeb1d3b682359ecf96e29e02b8013ac22e130b936910fb99fba162cc6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2075268423fa15c86e3dcf70c5378cc70bc5a9bc2b245515dc098f009f770c832cd5a6148c7a9c1e77ab2c7eed5e9e014476cdc66a83e8ec71835ed6a52a05a8
|
7
|
+
data.tar.gz: 07f0c6f4f205fb4179e4bc44ce38937cd51a455a9a93b64a29a61597f5a9286aadb731b4a825ea7d6a0199c7677adad1e866e6f464cf23a34b1bb6583af0ee67
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
# v0.16.2
|
2
|
+
|
3
|
+
- Add --chruby option to use a Ruby managed by chruby
|
4
|
+
|
5
|
+
# v0.16.1
|
6
|
+
|
7
|
+
- Add --output-humanize option to --output=simple
|
8
|
+
|
1
9
|
# v0.16.0
|
2
10
|
|
3
11
|
- Support benchmarking inline Ruby scripts [#75](https://github.com/benchmark-driver/benchmark-driver/pull/75)
|
data/exe/benchmark-driver
CHANGED
@@ -48,6 +48,11 @@ config = BenchmarkDriver::Config.new.tap do |c|
|
|
48
48
|
executables << BenchmarkDriver::Rbenv.parse_spec(version)
|
49
49
|
end
|
50
50
|
end if system("which rbenv > #{File::NULL} 2>&1")
|
51
|
+
o.on('--chruby VERSIONS', String, 'Ruby executables in chruby (x.x.x arg1;y.y.y arg2;...)') do |r|
|
52
|
+
r.split(';').each do |version|
|
53
|
+
executables << BenchmarkDriver::Chruby.parse_spec(version)
|
54
|
+
end
|
55
|
+
end if Dir.exist?('/opt/rubies') || Dir.exist?("#{ENV['HOME']}/.rubies")
|
51
56
|
o.on('--rvm VERSIONS', String, 'Ruby executables in rvm (x.x.x arg1;y.y.y arg2;...)') do |r|
|
52
57
|
r.split(';').each do |version|
|
53
58
|
executables << BenchmarkDriver::Rvm.parse_spec(version)
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'shellwords'
|
2
|
+
|
3
|
+
module BenchmarkDriver
|
4
|
+
module Chruby
|
5
|
+
# @param [String] version
|
6
|
+
def self.ruby_path(version)
|
7
|
+
prefix = (Dir.glob('/opt/rubies/*') + Dir.glob("#{ENV['HOME']}/.rubies/*")).find do |dir|
|
8
|
+
File.basename(dir) == version
|
9
|
+
end
|
10
|
+
unless prefix
|
11
|
+
abort "Failed to find '#{version}' in /opt/rubies or ~/.rubies"
|
12
|
+
end
|
13
|
+
"#{prefix}/bin/ruby"
|
14
|
+
end
|
15
|
+
|
16
|
+
# @param [String] full_spec - "2.5.0", "2.5.0 --jit", "JIT::2.5.0 --jit", etc.
|
17
|
+
def self.parse_spec(full_spec)
|
18
|
+
name, spec = full_spec.split('::', 2)
|
19
|
+
spec ||= name # if `::` is not given, use the whole string as spec
|
20
|
+
version, *args = spec.shellsplit
|
21
|
+
BenchmarkDriver::Config::Executable.new(
|
22
|
+
name: name,
|
23
|
+
command: [BenchmarkDriver::Chruby.ruby_path(version), *args],
|
24
|
+
)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -1,13 +1,18 @@
|
|
1
1
|
class BenchmarkDriver::Output::Simple
|
2
2
|
NAME_LENGTH = 10
|
3
3
|
|
4
|
+
OPTIONS = {
|
5
|
+
humanize: ['--output-humanize true|false', TrueClass, 'Humanize result numbers (default: true)'],
|
6
|
+
}
|
7
|
+
|
4
8
|
# @param [Array<BenchmarkDriver::Metric>] metrics
|
5
9
|
# @param [Array<BenchmarkDriver::Job>] jobs
|
6
10
|
# @param [Array<BenchmarkDriver::Context>] contexts
|
7
|
-
def initialize(metrics:, jobs:, contexts:)
|
11
|
+
def initialize(metrics:, jobs:, contexts:, options:)
|
8
12
|
@metrics = metrics
|
9
13
|
@context_names = contexts.map(&:name)
|
10
14
|
@name_length = jobs.map(&:name).map(&:size).max
|
15
|
+
@humanize = options.fetch(:humanize, true)
|
11
16
|
end
|
12
17
|
|
13
18
|
def with_warmup(&block)
|
@@ -78,6 +83,8 @@ class BenchmarkDriver::Output::Simple
|
|
78
83
|
end
|
79
84
|
|
80
85
|
def humanize(value)
|
86
|
+
return value unless @humanize
|
87
|
+
|
81
88
|
if BenchmarkDriver::Result::ERROR.equal?(value)
|
82
89
|
return " %#{NAME_LENGTH}s" % 'ERROR'
|
83
90
|
elsif value == 0.0
|
data/lib/benchmark_driver.rb
CHANGED
@@ -3,6 +3,7 @@ require 'benchmark_driver/config'
|
|
3
3
|
require 'benchmark_driver/job_parser'
|
4
4
|
require 'benchmark_driver/output'
|
5
5
|
require 'benchmark_driver/rbenv'
|
6
|
+
require 'benchmark_driver/chruby'
|
6
7
|
require 'benchmark_driver/rvm'
|
7
8
|
require 'benchmark_driver/repeater'
|
8
9
|
require 'benchmark_driver/ridkuse'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: benchmark_driver
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.16.
|
4
|
+
version: 0.16.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Takashi Kokubun
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-11-
|
11
|
+
date: 2022-11-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -100,6 +100,7 @@ files:
|
|
100
100
|
- images/optcarrot.png
|
101
101
|
- lib/benchmark_driver.rb
|
102
102
|
- lib/benchmark_driver/bulk_output.rb
|
103
|
+
- lib/benchmark_driver/chruby.rb
|
103
104
|
- lib/benchmark_driver/config.rb
|
104
105
|
- lib/benchmark_driver/default_job.rb
|
105
106
|
- lib/benchmark_driver/default_job_parser.rb
|
@@ -131,7 +132,7 @@ homepage: https://github.com/benchmark-driver/benchmark-driver
|
|
131
132
|
licenses:
|
132
133
|
- MIT
|
133
134
|
metadata: {}
|
134
|
-
post_install_message:
|
135
|
+
post_install_message:
|
135
136
|
rdoc_options: []
|
136
137
|
require_paths:
|
137
138
|
- lib
|
@@ -147,7 +148,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
147
148
|
version: '0'
|
148
149
|
requirements: []
|
149
150
|
rubygems_version: 3.3.7
|
150
|
-
signing_key:
|
151
|
+
signing_key:
|
151
152
|
specification_version: 4
|
152
153
|
summary: Fully-featured accurate benchmark driver for Ruby
|
153
154
|
test_files: []
|