benchmark_driver 0.15.2 → 0.15.3
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 +4 -0
- data/exe/benchmark-driver +7 -2
- data/lib/benchmark_driver.rb +1 -0
- data/lib/benchmark_driver/ridkuse.rb +57 -0
- data/lib/benchmark_driver/ruby_interface.rb +7 -0
- data/lib/benchmark_driver/version.rb +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bd29e2900712c65a6309f5cfdf39bb57b2d2943527486393afadd001b63c10a2
|
4
|
+
data.tar.gz: 8c098e876e70d1fdde41cb6ece94109b53a96ca93ec0ad2a5e87013ce23b983c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 34d30bd25d67c10e916294acd72bbdb53d8a0d54ed4b9596780a7d89710f0d32f097702a60cafee3a1844912563b75b871a3b6496a1a1698b1454b62b9a32c4b
|
7
|
+
data.tar.gz: fa768309b8da1382630a4954bac333bd716d38913dcb3f390e2eeff4f942d6cfba619f010ea9522344bc8be4227191dd3ddf3901eed1d529fc7cce52b4d4014d
|
data/CHANGELOG.md
CHANGED
data/exe/benchmark-driver
CHANGED
@@ -47,7 +47,12 @@ config = BenchmarkDriver::Config.new.tap do |c|
|
|
47
47
|
r.split(';').each do |version|
|
48
48
|
executables << BenchmarkDriver::Rbenv.parse_spec(version)
|
49
49
|
end
|
50
|
-
end if system(
|
50
|
+
end if system("which rbenv > #{File::NULL}")
|
51
|
+
o.on('--ridkuse VERSIONS', String, 'Ruby executables in ridk use (x.x.x arg1;y.y.y arg2;...) for RubyInstaller2 on Windows') do |r|
|
52
|
+
r.split(';').each do |version|
|
53
|
+
executables << BenchmarkDriver::RidkUse.parse_spec(version)
|
54
|
+
end
|
55
|
+
end if system("ridk version > #{File::NULL} 2>&1")
|
51
56
|
o.on('--repeat-count NUM', Integer, 'Try benchmark NUM times and use the fastest result or the worst memory usage') do |v|
|
52
57
|
c.repeat_count = v
|
53
58
|
end
|
@@ -68,7 +73,7 @@ config = BenchmarkDriver::Config.new.tap do |c|
|
|
68
73
|
end
|
69
74
|
o.on('--timeout SECONDS', Float, 'Timeout ruby command execution with timeout(1)') do |v|
|
70
75
|
timeout = v
|
71
|
-
end if (os = RbConfig::CONFIG['host_os']) && os.match(/linux/) && system(
|
76
|
+
end if (os = RbConfig::CONFIG['host_os']) && os.match(/linux/) && system("which timeout > #{File::NULL}") # depending on coreutils for now...
|
72
77
|
o.on('-v', '--verbose', 'Verbose mode. Multiple -v options increase visilibity (max: 2)') do |v|
|
73
78
|
c.verbose += 1
|
74
79
|
end
|
data/lib/benchmark_driver.rb
CHANGED
@@ -4,6 +4,7 @@ require 'benchmark_driver/job_parser'
|
|
4
4
|
require 'benchmark_driver/output'
|
5
5
|
require 'benchmark_driver/rbenv'
|
6
6
|
require 'benchmark_driver/repeater'
|
7
|
+
require 'benchmark_driver/ridkuse'
|
7
8
|
require 'benchmark_driver/ruby_interface'
|
8
9
|
require 'benchmark_driver/runner'
|
9
10
|
require 'benchmark_driver/version'
|
@@ -0,0 +1,57 @@
|
|
1
|
+
require 'open3'
|
2
|
+
require 'shellwords'
|
3
|
+
|
4
|
+
module BenchmarkDriver
|
5
|
+
module RidkUse
|
6
|
+
# Execute "ridk use list" command to get a list of Ruby versions.
|
7
|
+
#
|
8
|
+
# * "ridk use list" is a sub-command of ridk. It returns a list of installed ruby versions.
|
9
|
+
# * "ridk" is a helper command tool of RubyInstaller2 for Windows, that to manage the runtime environment of RubyInstaller-2.4 and up.
|
10
|
+
#
|
11
|
+
# refer to:
|
12
|
+
# {The ridk tool · oneclick/rubyinstaller2 Wiki}[https://github.com/oneclick/rubyinstaller2/wiki/The-ridk-tool]
|
13
|
+
#
|
14
|
+
def self.ridk_use_list
|
15
|
+
ruby_list = []
|
16
|
+
regex = /(\d+)\s-\s([^\s]+)\s\truby\s([^\s]+)\s/
|
17
|
+
cmd = "ridk use list"
|
18
|
+
stdout, status = Open3.capture2e(cmd)
|
19
|
+
|
20
|
+
stdout.each_line do |line|
|
21
|
+
if matched = regex.match(line)
|
22
|
+
idx, rubypath, rubyver = matched[1..3]
|
23
|
+
ruby_list << rubyver << [idx, "#{rubypath}/bin/ruby.exe"]
|
24
|
+
else
|
25
|
+
abort "Failed to execute 'ridk use list'"
|
26
|
+
end
|
27
|
+
end
|
28
|
+
Hash[*ruby_list]
|
29
|
+
end
|
30
|
+
|
31
|
+
# @param [String] version
|
32
|
+
def self.ruby_path(version)
|
33
|
+
ruby_list = BenchmarkDriver::RidkUse.ridk_use_list
|
34
|
+
regex = Regexp.new(version)
|
35
|
+
matched = ruby_list.keys.find {|k| k =~ regex}
|
36
|
+
|
37
|
+
if ruby_list.has_key?(version)
|
38
|
+
ruby_list[version][1]
|
39
|
+
elsif matched
|
40
|
+
ruby_list[matched][1]
|
41
|
+
else
|
42
|
+
abort "version #{version} not found"
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
# @param [String] full_spec - "2.6.3", "2.6.3p62", "2.6.3,--jit", etc.
|
47
|
+
def self.parse_spec(full_spec)
|
48
|
+
name, spec = full_spec.split('::', 2)
|
49
|
+
spec ||= name # if `::` is not given, regard whole string as spec
|
50
|
+
version, *args = spec.shellsplit
|
51
|
+
BenchmarkDriver::Config::Executable.new(
|
52
|
+
name: name,
|
53
|
+
command: [BenchmarkDriver::RidkUse.ruby_path(version), *args],
|
54
|
+
)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
@@ -71,6 +71,13 @@ module BenchmarkDriver
|
|
71
71
|
end
|
72
72
|
end
|
73
73
|
|
74
|
+
# ridk use command for RubyInstaller2 on Windows
|
75
|
+
def ridkuse(*versions)
|
76
|
+
versions.each do |version|
|
77
|
+
@executables << BenchmarkDriver::RidkUse.parse_spec(version)
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
74
81
|
def executable(name:, command:)
|
75
82
|
raise ArgumentError, "`command' should be an Array" unless command.kind_of? Array
|
76
83
|
@executables << BenchmarkDriver::Config::Executable.new(name: name, command: command)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: benchmark_driver
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.15.
|
4
|
+
version: 0.15.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Takashi Kokubun
|
@@ -113,6 +113,7 @@ files:
|
|
113
113
|
- lib/benchmark_driver/output/simple.rb
|
114
114
|
- lib/benchmark_driver/rbenv.rb
|
115
115
|
- lib/benchmark_driver/repeater.rb
|
116
|
+
- lib/benchmark_driver/ridkuse.rb
|
116
117
|
- lib/benchmark_driver/ruby_interface.rb
|
117
118
|
- lib/benchmark_driver/runner.rb
|
118
119
|
- lib/benchmark_driver/runner/block.rb
|