小编lev*_*llr的帖子

为什么#map 比#each 更高效?

当你只有一把锤子时,一切看起来都像钉子。在发现and和其他可迭代方法Array#each的实用性、优雅性和语法乐趣之前,可以这样说Ruby 中的方法。我好奇的是:Array#mapArray#select

为什么使用更精确的可迭代方法时性能会实际提高?总体来说这是真的吗?

例如,在

require 'benchmark'

array = (1..100000).to_a

puts Benchmark.measure {
  100.times do
    array.map { |el| el.even? }
  end
}

puts Benchmark.measure {
  100.times do
    new_array = []
    array.each do |el| 
      new_array << el.even? 
    end
  end
}

# ruby bench.rb
# 0.450598   0.015524   0.466122 (  0.466802)
# 0.496796   0.018525   0.515321 (  0.516196)
Run Code Online (Sandbox Code Playgroud)

Benchmark总是表现出有利于 的时间性能差异Array#map。在下面的代码中:

puts Benchmark.measure {
  100.times do
    array.select { |el| el.even? }
  end
}

puts Benchmark.measure {
  100.times do
    new_array …
Run Code Online (Sandbox Code Playgroud)

ruby performance

2
推荐指数
1
解决办法
1238
查看次数

标签 统计

performance ×1

ruby ×1