回答編集履歴

1

追記

2019/10/24 23:52

投稿

asm
asm

スコア15149

test CHANGED
@@ -1 +1,59 @@
1
1
  継承してメソッドをオーバーライドしていますので`Array#map`が使われます。
2
+
3
+
4
+
5
+ ちなみに速度を計測
6
+
7
+
8
+
9
+ ```ruby
10
+
11
+ require 'benchmark_driver'
12
+
13
+
14
+
15
+ Benchmark.driver do |x|
16
+
17
+ x.prelude %{
18
+
19
+ array = (0..100).to_a.shuffle
20
+
21
+ array_map = Array.instance_method(:map).bind(array)
22
+
23
+ enum_map = Enumerable.instance_method(:map).bind(array)
24
+
25
+ }
26
+
27
+ x.report 'Array#map', %{ array_map.call(&:succ) }
28
+
29
+ x.report 'Enumerable#map', %{ enum_map.call(&:succ) }
30
+
31
+ x.report 'map', %{ array.map(&:succ) }
32
+
33
+ x.compare!
34
+
35
+ end
36
+
37
+ ```
38
+
39
+
40
+
41
+ したところ
42
+
43
+
44
+
45
+ ```
46
+
47
+ Comparison:
48
+
49
+ map: 310522.1 i/s
50
+
51
+ Array#map: 292079.8 i/s - 1.06x slower
52
+
53
+ Enumerable#map: 192461.2 i/s - 1.61x slower
54
+
55
+ ```
56
+
57
+
58
+
59
+ Enumerable#mapは1.5倍ほど遅いようです。