class BenchmarkDriver::RubyInterface
def self.run(**args, &block)
def self.run(**args, &block) new(**args).tap { |x| block.call(x) }.run end
def compare!
def compare! @config.output_type = 'compare' end
def executable(name:, command:)
def executable(name:, command:) raise ArgumentError, "`command' should be an Array" unless command.kind_of? Array @executables << BenchmarkDriver::Config::Executable.new(name: name, command: command) end
def initialize(output: nil, runner: nil, repeat_count: 1)
-
runner
(String, NilClass
) -- -
output
(String, NilClass
) --
def initialize(output: nil, runner: nil, repeat_count: 1) @prelude = '' @loop_count = nil @jobs = [] @config = BenchmarkDriver::Config.new @config.output_type = output.to_s if output @config.runner_type = runner.to_s if runner @config.repeat_count = Integer(repeat_count) @executables = [] end
def loop_count(count)
-
count
(Integer
) --
def loop_count(count) @loop_count = count end
def output(type)
def output(type) @config.output_type = type end
def prelude(script)
-
script
(String
) --
def prelude(script) @prelude << "#{script}\n" end
def rbenv(*versions)
def rbenv(*versions) versions.each do |version| @executables << BenchmarkDriver::Rbenv.parse_spec(version) end end
def report(name, script = nil)
-
script
(String, nil
) -- - Benchmarked script in String. If nil, name is considered as script too. -
name
(String
) -- - Name shown on result output.
def report(name, script = nil) if script.nil? script = name end @jobs << { benchmark: [{ name: name, script: script }] } end
def ridkuse(*versions)
def ridkuse(*versions) versions.each do |version| @executables << BenchmarkDriver::RidkUse.parse_spec(version) end end
def run
def run unless @executables.empty? @config.executables = @executables end jobs = @jobs.flat_map do |job| BenchmarkDriver::JobParser.parse({ type: @config.runner_type, prelude: @prelude, loop_count: @loop_count, }.merge!(job)) end BenchmarkDriver::Runner.run(jobs, config: @config) end
def rvm(*versions)
def rvm(*versions) versions.each do |version| @executables << BenchmarkDriver::Rvm.parse_spec(version) end end
def verbose(level = 1)
def verbose(level = 1) @config.verbose = level end