Fast Ruby for hash_update_vs_hash_brackets
- 主要言語
- Ruby
- スター
- 5.7k
- フォーク
- 371
- PR マージ指標
- 30日以内にマージされた PR はありません
説明
**Hash#update** is an alias for **Hash#merge!**
Currently we have `merge_bang_vs_[]=` which suggests that **Hash#[]=** is faster and **Hash#merge!()** is slower.
But we dont have any suggestions for `update_vs_[]=` i.e., **Hash#update()** vs **Hash#[]=**.
```
require 'benchmark/ips'
ENUM = (1..100)
def fast
ENUM.each_with_object({}) do |e, h|
h[e] = e
end
end
def slow
ENUM.each_with_object({}) do |e, h|
h.update(e => e)
end
end
Benchmark.ips do |x|
x.report('Hash#[]=') { fast }
x.report('Hash#update') { slow }
x.compare!
end
```
```
##### `Hash#update` vs `Hash#[]=` [code](code/hash/update-vs-\[\]=.rb)
$ ruby -v code/hash/update-vs-\[\]=.rb
ruby 2.6.6p146 (2020-03-31 revision 67876) [x86_64-darwin18]
Warming up --------------------------------------
Hash#[]= 7.453k i/100ms
Hash#update 4.311k i/100ms
Calculating -------------------------------------
Hash#[]= 74.764k (± 1.9%) i/s - 380.103k in 5.085962s
Hash#update 43.220k (± 0.8%) i/s - 219.861k in 5.087364s
Comparison:
Hash#[]=: 74764.0 i/s
Hash#update: 43220.1 i/s - 1.73x (± 0.00) slower
```
Can we extend this to Hash#update()?
コントリビューションガイド
評価
この issue はまだ評価されていません。