Skip to content

Commit 0a6b46e

Browse files
bejmullerJuanitoFatas
authored andcommitted
Add Hash#merge({}) vs Hash#dup#merge!({}) vs {}#merge!(Hash)
1 parent f3a855f commit 0a6b46e

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
require 'benchmark/ips'
2+
3+
ENUM = (1..100)
4+
ORIGINAL_HASH = { key1: 'value 1' }
5+
6+
def slow
7+
ENUM.inject([]) do |a, e|
8+
a << ORIGINAL_HASH.merge(key2: e)
9+
end
10+
end
11+
12+
def slow_dup
13+
ENUM.inject([]) do |a, e|
14+
a << ORIGINAL_HASH.dup.merge!(key2: e)
15+
end
16+
end
17+
18+
def fast
19+
ENUM.inject([]) do |a, e|
20+
a << { key2: e }.merge!(ORIGINAL_HASH)
21+
end
22+
end
23+
24+
Benchmark.ips do |x|
25+
x.report('Hash#merge({})') { slow }
26+
x.report('Hash#dup#merge!({})') { slow_dup }
27+
x.report('{}#merge!(Hash)') { fast }
28+
x.compare!
29+
end

0 commit comments

Comments
 (0)