#! /usr/bin/env ruby
require 'benchmark'
Benchmark.bmbm do |x|
iteration = 1_000_000
input = [0,1,2,3,4,5,6,7,8,9]
x.report('inject proc') do
iteration.times do
input.inject(&:+)
end
end
x.report('inject symbol') do
iteration.times do
input.inject(:+)
end
end
x.report('inject block') do
iteration.times do
input.inject{|acc, curr| acc + curr}
end
end
end
IyEgL3Vzci9iaW4vZW52IHJ1YnkKcmVxdWlyZSAnYmVuY2htYXJrJwoKQmVuY2htYXJrLmJtYm0gZG8gfHh8CgogIGl0ZXJhdGlvbiA9IDFfMDAwXzAwMAogIGlucHV0ID0gWzAsMSwyLDMsNCw1LDYsNyw4LDldCgogIHgucmVwb3J0KCdpbmplY3QgcHJvYycpIGRvCiAgICBpdGVyYXRpb24udGltZXMgZG8KICAgICAgICBpbnB1dC5pbmplY3QoJjorKQogICAgZW5kCiAgZW5kCgogIHgucmVwb3J0KCdpbmplY3Qgc3ltYm9sJykgZG8KICAgIGl0ZXJhdGlvbi50aW1lcyBkbwogICAgICAgIGlucHV0LmluamVjdCg6KykKICAgIGVuZAogIGVuZAogIAogIHgucmVwb3J0KCdpbmplY3QgYmxvY2snKSBkbwogICAgaXRlcmF0aW9uLnRpbWVzIGRvCiAgICAgICAgaW5wdXQuaW5qZWN0e3xhY2MsIGN1cnJ8IGFjYyArIGN1cnJ9CiAgICBlbmQKICBlbmQKCmVuZAo=