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代码比较了总结整数的两种方式。令我惊讶的是,更优雅的注入或减少方法是优于其他。为什么会这样?为什么人们打扰使用低效注入或减少?仅仅因为它很优雅? PS:感谢所有鼓舞人心的答案。我的意图是询问幕后发生的事情是什么导致了这些差异。红宝石地图/降低功能必要的效率?
如果你在你做的每件事情中都计算纳秒,你就没有时间去做任何有效的事情。另请参见“过早优化”(不要使用删节版本 - 正如完整的引用正确地指出的那样,在某些情况下,像这样的事情确实很重要)。 – delnan
谢谢。非常周到的意见! –