Class: Benchmark::Driver::RepeatableRunner

Inherits:
Object
  • Object
show all
Defined in:
lib/benchmark/driver/repeatable_runner.rb

Instance Method Summary collapse

Constructor Details

#initialize(job) ⇒ RepeatableRunner

Returns a new instance of RepeatableRunner.



3
4
5
# File 'lib/benchmark/driver/repeatable_runner.rb', line 3

def initialize(job)
  @job = job
end

Instance Method Details

#run(repeat_count:, runner:) ⇒ Benchmark::Driver::BenchmarkResult

Parameters:

  • repeat_count (Integer)
  • runner (Proc)
    • should take (job, unit_iters) and return duration.

Returns:



10
11
12
13
14
15
16
17
# File 'lib/benchmark/driver/repeatable_runner.rb', line 10

def run(repeat_count:, runner:)
  real_times = (repeat_count || 1).times.map do
    runner.call(@job, @job.loop_count)
  end
  Benchmark::Driver::BenchmarkResult.new(@job).tap do |result|
    result.real = real_times.select { |d| d > 0 }.min || real_times.max
  end
end