Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

`dup`ing an Identity Hash/Set is faster than creating a new one

Abierto
#230 2 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
52/100
Tipo de issue
Nueva funcionalidad
Claridad
Bastante claro
Estado de actividad
Tranquilo
Stack tecnológico
ruby
Área
performance

Línea de trabajo

Empieza por localizar el formato existente de entradas de benchmarks o idioms del repositorio, ya que no se indica ningún archivo de destino. Usa los ejemplos proporcionados de Benchmark.ips para identity Hash y Set, y considera el trabajo completo cuando el repositorio registre la comparación y su resultado de asignación o rendimiento de forma coherente con sus otras entradas.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

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
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

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de fastruby/fast-ruby

Todos los issues de fastruby/fast-ruby

Issues similares

Más issues de Ruby

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.