継承してメソッドをオーバーライドしていますのでArray#map
が使われます。
ちなみに速度を計測
ruby
1require 'benchmark_driver'
2
3Benchmark.driver do |x|
4 x.prelude %{
5 array = (0..100).to_a.shuffle
6 array_map = Array.instance_method(:map).bind(array)
7 enum_map = Enumerable.instance_method(:map).bind(array)
8 }
9 x.report 'Array#map', %{ array_map.call(&:succ) }
10 x.report 'Enumerable#map', %{ enum_map.call(&:succ) }
11 x.report 'map', %{ array.map(&:succ) }
12 x.compare!
13end
したところ
Comparison:
map: 310522.1 i/s
Array#map: 292079.8 i/s - 1.06x slower
Enumerable#map: 192461.2 i/s - 1.61x slower
Enumerable#mapは1.5倍ほど遅いようです。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/24 23:46