Class: Benchmark::Driver::DurationRunner

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

Instance Method Summary collapse

Constructor Details

#initialize(job) ⇒ DurationRunner



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

def initialize(job)
  @job = job
end

Instance Method Details

#run(seconds:, unit_iters:, runner:) ⇒ Benchmark::Driver::BenchmarkResult



11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/benchmark/driver/duration_runner.rb', line 11

def run(seconds:, unit_iters:, runner:)
  real_time  = 0.0
  iterations = 0
  unit_iters = unit_iters.to_i

  benchmark_until = Benchmark::Driver::Time.now + seconds
  while Benchmark::Driver::Time.now < benchmark_until
    real_time  += runner.call(@job, unit_iters)
    iterations += unit_iters
  end

  Benchmark::Driver::BenchmarkResult.new(@job, iterations, real_time)
end