module BenchmarkDriver::Repeater

def with_repeat(config:, larger_better:, rest_on_average: :first, &block)

Parameters:
  • block (Proc) -- - returns Float or [Float, ...]
def with_repeat(config:, larger_better:, rest_on_average: :first, &block)
  values = config.repeat_count.times.map { block.call }
  desired_value =
    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)
    when 'median'
      median_result(values, rest_on_average)
    else
      raise "unexpected repeat_result #{config.repeat_result.inspect}"
    end
  RepeatResult.new(value: desired_value, all_values: extract_values(values))
end