Module: BenchmarkDriver::Repeater

Defined in:
lib/benchmark_driver/repeater.rb

Overview

Repeat calling block and return desired result: “best”, “worst” or “average”.

Constant Summary collapse

VALID_TYPES =
%w[best worst average]

Class Method Summary collapse

Class Method Details

.with_repeat(config:, larger_better:, rest_on_average: :first, &block) ⇒ Object

‘block.call` can return multiple objects, but the first one is used for sort. When `config.repeat_result == ’average’‘, how to deal with rest objects is decided by `:rest_on_average` option.



10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/benchmark_driver/repeater.rb', line 10

def with_repeat(config:, larger_better:, rest_on_average: :first, &block)
  values = config.repeat_count.times.map { block.call }

  case config.repeat_result
  when 'best'
    best_result(values, larger_better)
  when 'worst'
    best_result(values, !larger_better)
  when 'average'
    average_result(values, rest_on_average)
  else
    raise "unexpected repeat_result #{config.repeat_result.inspect}"
  end
end