It's one less allocation, too :)
|
YJIT off |
YJIT on |
Set.new.compare_by_identity |
2.571M |
4.260M |
S.dup |
3.014M |
4.999M |
| ∆ |
1.17x |
1.17x |
|
YJIT off |
YJIT on |
Hash.new.compare_by_identity |
5.643M |
8.208M |
H.dup |
5.988M |
9.014M |
| ∆ |
1.06x |
1.09x |
S = Set.new.compare_by_identity.freeze
H = Hash.new.compare_by_identity.freeze
Benchmark.ips do |x|
x.config(time: 10)
x.report(".new.compare_by_identity") do |times|
i = 0
while (i += 1) <= times
S.dup
end
end
x.report(".dup ") do |times|
i = 0
while (i += 1) <= times
Set.new.compare_by_identity
end
end
x.compare!
end
Benchmark.ips do |x|
x.config(time: 10)
x.report(".new.compare_by_identity") do |times|
i = 0
while (i += 1) <= times
H.dup
end
end
x.report(".dup ") do |times|
i = 0
while (i += 1) <= times
Hash.new.compare_by_identity
end
end
x.compare!
end
It's one less allocation, too :)
Set.new.compare_by_identityS.dupHash.new.compare_by_identityH.dup