fastruby / fastruby/fast-ruby

Fast Ruby for hash_update_vs_hash_brackets

Abierto
#194 0 comentarios 0 reacciones 0 asignados Ver en GitHub
Suggestion
Lenguaje dominante
Ruby
Estrellas
5.7k
Forks
371
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

**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()?

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.