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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c01422dfa4032a839397f7151e374767d0596292930e83a132ce934c7734e0b4
4
- data.tar.gz: ef5ddc5dec5813f662e46f6bccc12910ad74279b12e76c4680240973d04b392f
3
+ metadata.gz: d12d73c435a4bc6f93f92bfa7facf60c4b7badc985249f5ccb71b77137454106
4
+ data.tar.gz: 53d4c9ffeb1d3b682359ecf96e29e02b8013ac22e130b936910fb99fba162cc6
5
5
  SHA512:
6
- metadata.gz: c6fc200972891784176499cc685a10c6e823982d004fc1c068cb0beccdaa7eabade24da867f3b72f92c8d2db3af9b33bee1a122262d13a962ee19a2b36d2df20
7
- data.tar.gz: d779167efb7516daba05bdb79b0a332ac6896c7717c70d550a788a7855b50e919d60f7c1ba2ebddfcb857d80bd83e5d716ef6a0807ed373b2065264ef9996f67
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
@@ -1,3 +1,3 @@
1
1
  module BenchmarkDriver
2
- VERSION = '0.16.0'
2
+ VERSION = '0.16.2'
3
3
  end
@@ -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.0
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-04 00:00:00.000000000 Z
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: []