#!/usr/bin/ruby

require 'benchmark'

short_test_strings = ["ruby", "python"]
medium_test_strings = ["ruby: a programmers best friend", "python: batteries included"]
long_test_strings = ["ruby: a programmers best friend "*15, "python: batteries included "*15]

def test(benchmark, programm, strings, iterations = 100)
  %w(rb py).each do | language |
    cmd = "./#{programm}.#{language} '#{strings[0]}' '#{strings[1]}'"      
    benchmark.report("#{language}: #{programm.gsub('editierdistanz-', '')} (#{iterations} times)") do
      iterations.times do system "#{cmd} > /dev/null" end
    end
  end
end

Benchmark.bm(30) do | b |
  puts "Distance between #{short_test_strings[0].inspect} and #{short_test_strings[1].inspect}"
  test(b, "editierdistanz-recursive", short_test_strings, 100)
  test(b, "editierdistanz-notizblock", short_test_strings, 100)
  test(b, "editierdistanz-dynamic", short_test_strings, 100)
  puts
  puts "Distance between #{medium_test_strings[0].inspect} and #{medium_test_strings[1].inspect}"
  test(b, "editierdistanz-notizblock", medium_test_strings, 100)
  test(b, "editierdistanz-dynamic", medium_test_strings, 100)
  puts
  puts "Distance between #{medium_test_strings[0].inspect} * 15 and #{medium_test_strings[1].inspect} * 15"
  test(b, "editierdistanz-dynamic", long_test_strings, 10)
end