module Benchkit::IpsReporter

Public Class Methods

report(execs, results) click to toggle source

@param [Array<Executable>] execs @param [Array<BenchmarkResult>] results

# File lib/benchkit.rb, line 235
def report(execs, results)
  puts "Result -------------------------------------------"
  puts "#{' ' * 16} #{execs.map { |e| "%13s" % e.name }.join('  ')}"

  results.each do |result|
    print '%16s ' % result.name
    puts execs.map { |exec|
      "%13s" % ("%.1f i/s" % result.ips_of(exec))
    }.join('  ')
  end
  puts

  if execs.size > 1
    compare(execs, results)
  end
end

Private Class Methods

compare(execs, results) click to toggle source
# File lib/benchkit.rb, line 254
def compare(execs, results)
  results.each do |result|
    puts "Comparison: #{result.name}"

    sorted = execs.sort_by { |e| -result.ips_of(e) }
    first = sorted.first

    sorted.each do |exec|
      if exec == first
        puts "%16s: %12s i/s" % [first.name, "%.1f" % result.ips_of(first)]
      else
        puts "%16s: %12s i/s - %.2fx slower" % [exec.name, "%.1f" % result.ips_of(exec), result.ips_of(first) / result.ips_of(exec)]
      end
    end
    puts
  end
end