b1 = Time.now
puts (1..100000).inject(0) { |x, y| x + y }
a1 = Time.now
puts "Time for inject: #{a1 - b1}"
b2 = Time.now
sum = 0
(1..100000).each do |value|
sum += value
end
puts sum
a2 = Time.now
puts "Time for each: #{a2 - b2}"
上面的 Ruby 代码比较了两种对整数求和的方法。令我惊讶的是,更优雅的注入或减少方法的表现优于另一种。为什么会这样?为什么人们会费心使用低效的inject或reduce?仅仅因为它很优雅?
PS:感谢所有鼓舞人心的答案。我的目的是询问导致差异的幕后情况。