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