相关疑难解决方法(0)

为什么总和比注入(:+)快得多?

所以我在Ruby 2.4.0中运行了一些基准并意识到了这一点

(1...1000000000000000000000000000000).sum
Run Code Online (Sandbox Code Playgroud)

立即计算,而

(1...1000000000000000000000000000000).inject(:+)
Run Code Online (Sandbox Code Playgroud)

需要很长时间,我只是中止了操作.我的印象Range#sum是别名,Range#inject(:+)但似乎不是这样.那怎么sum工作,为什么它比这快得多inject(:+)

NBEnumerable#sum(由其实现Range)的文档没有说明延迟评估或其他任何内容.

ruby

126
推荐指数
1
解决办法
8073
查看次数

标签 统计

ruby ×1