class Benchmark::IPS::Job

def run_benchmark

Run calculation.
def run_benchmark
  @list.each do |item|
    next if run_single? && @held_results && @held_results.key?(item.label)
    @out.running item.label, @time
    Timing.clean_env
    iter = 0
    measurements_us = []
    # Running this number of cycles should take around 100ms.
    cycles = @timing[item]
    target = Timing.add_second Timing.now, @time
    begin
      before = Timing.now
      item.call_times cycles
      after = Timing.now
      # If for some reason the timing said this took no time (O_o)
      # then ignore the iteration entirely and start another.
      iter_us = Timing.time_us before, after
      next if iter_us <= 0.0
      iter += cycles
      measurements_us << iter_us
    end while Timing.now < target
    final_time = before
    measured_us = measurements_us.inject(:+)
    samples = measurements_us.map { |time_us|
      iterations_per_sec cycles, time_us
    }
    rep = create_report(item.label, measured_us, iter, create_stats(samples), cycles)
    if (final_time - target).abs >= (@time.to_f * MAX_TIME_SKEW)
      rep.show_total_time!
    end
    @out.add_report rep, caller(1).first
    break if run_single?
  end
end