Fast Ruby for hash_update_vs_hash_brackets
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 50/100
- Tipo de issue
- Documentación
- Claridad
- Bien especificado
- Estado de actividad
- Estancado
- Stack tecnológico
- ruby
- Área
- performance
Línea de trabajo
Usa el ejemplo de benchmark-ips proporcionado como punto de partida y compara Hash#[]= con Hash#update en la colección de benchmarks fast-ruby existente. Añade la entrada correspondiente code/hash/update-vs-[]=.rb con la salida de benchmark de Ruby mostrada; estará terminado cuando la comparación esté documentada junto a merge_bang_vs_[]=.
Escrito por el modelo de indexación a partir del texto del issue.
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()?
- Lenguaje dominante
- Ruby
- Estrellas
- 5.7k
- Forks
- 370
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de fastruby/fast-ruby
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 52/100
-
Dificultad 4/5 3-5 días Aptitud para principiantes 32/100
-
Dificultad 3/5 1-2 días Aptitud para principiantes 35/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 45/100
-
Dificultad 4/5 3-5 días Aptitud para principiantes 42/100
Todos los issues de fastruby/fast-ruby
Issues similares
-
user-reported
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
Kong/developer.konghq.com#7316 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
TheOdinProject/curriculum#31408 · 1 comentario ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
-
CI: json 3.0.2 removed `quirks_mode`, breaking ActiveSupport's JSON encoder on every test job Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
bensheldon/good_job#1816 · 5 comentarios ·