module Benchmark::Compare

def compare(*entries)

Parameters:
  • entries (Array) -- Reports to compare.
def compare(*entries)
  return if entries.size < 2
  sorted = entries.sort_by(&:ips).reverse
  best = sorted.shift
  $stdout.puts "\nComparison:"
  $stdout.printf "%20s: %10.1f i/s\n", best.label, best.ips
  sorted.each do |report|
    name = report.label.to_s
    
    $stdout.printf "%20s: %10.1f i/s - ", name, report.ips
    
    best_low = best.ips - best.ips_sd
    report_high = report.ips + report.ips_sd
    overlaps = report_high > best_low 
    
    if overlaps
      $stdout.print "same-ish: difference falls within error"
    else
      x = (best.ips.to_f / report.ips.to_f)
      $stdout.printf "%.2fx slower", x
    end
    
    $stdout.puts
  end
  $stdout.puts
end