performance/prelude_performance.rb
$LOAD_PATH << 'lib' # File.expand_path( File.dirname(__FILE__) + '/../lib' )
require_relative '../examples/prelude_lambda'
require 'benchmark'
include PreludeLambdaUsage
[10, 100, 1000, 10000].each do |n|
Benchmark.bm(40) do |b|
b.report("Sum_Of_Squares(n=#{n}): ") { (100000/n).times { SumOfSquares.((1..n).to_a) } }
end
end
[10, 100, 1000, 10000].each do |n|
Benchmark.bm(40) do |b|
b.report("Average(n=#{n}): ") { (100000/n).times { Average.((1..n).to_a) } }
end
end
[10, 100, 1000, 10000].each do |n|
Benchmark.bm(40) do |b|
b.report("Sum.(n=#{n}): ") { (100000/n).times { Sum.((1..n).to_a) } }
end
end
[10, 100, 1000].each do |n|
random_array = (0..n).to_a.shuffle
Benchmark.bm(40) do |b|
b.report("Merge_Sort(n=#{n}): ") { (100000/n).times { MergeSort.(random_array) } }
end
end
[10, 100, 1000].each do |n|
random_array = (0..n).to_a.shuffle
Benchmark.bm(40) do |b|
b.report("Quick_Sort(n=#{n}): ") { (100000/n).times { QuickSort.(random_array) } }
b.report("Quick_Sort/identity(n=#{n}): ") { (100000/n).times { QuickSortBy.(Id, random_array) } }
end
end