require 'benchmark'
class Symbol
def to_proc
Proc.new { |*args| args.shift.__send__(self, *args) }
end
end
n = 10000
s = Struct.new :id
messages = []
n.times { messages << s.new(:id => rand(n)) }
Benchmark.bm do |x|
# Integer
x.report { n.times { messages.map{|m| m.id} } }
x.report { n.times { messages.map(&:id) } }
end
# $ ruby perform.rb
# user system total real
# 33.280000 0.860000 34.140000 ( 34.912584)
# 191.940000 1.660000 193.600000 (197.168849)