module BenchmarkDriver::Repeater
def with_repeat(config:, larger_better:, rest_on_average: :first, &block)
-
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