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”方法被另一种方法性能超越。为什么会这样?为什么人们要费劲地使用低效的“inject”或“reduce”呢?仅仅因为它更优雅吗?
PS:感谢所有激励人心的答案。我的意图是询问背后发生了什么导致了差异。