Methods defined with `define_method` are slower to call
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 42/100
- Tipo de issue
- Documentación
- Claridad
- Bastante claro
- Estado de actividad
- Estancado
- Stack tecnológico
- ruby
- Área
- documentation, performance
Línea de trabajo
Comienza localizando la comparación existente entre define_method y module_eval en el repositorio y, después, revisa el benchmark mostrado en el issue. Se considerará terminado cuando se documente que llamar a métodos creados con define_method es más lento, junto con la comparación existente de definiciones de métodos y su contrapartida de rendimiento.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
While define_method indeed defines methods slighly faster than module_eval, I think it should be noted that calling methods defined with define_method is slower than calling module_eval ones (because define_method creates a closure):
require "benchmark/ips"
object = Class.new {
module_eval "def evaled_method; end"
define_method(:defined_method) {}
}.new
Benchmark.ips do |x|
x.report("module_eval") { object.evaled_method }
x.report("define_method") { object.defined_method }
x.compare!
end
Calculating -------------------------------------
module_eval 98.664k i/100ms
define_method 93.809k i/100ms
-------------------------------------------------
module_eval 6.794M (± 8.1%) i/s - 33.743M
define_method 4.588M (± 6.7%) i/s - 22.889M
Comparison:
module_eval: 6793763.3 i/s
define_method: 4587570.1 i/s - 1.48x slower
I think you benefit more from a method being faster to call than faster to define.
- 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
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
palladius/rails8-app-on-gcp#145 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
rubocop/rubocop-rspec#2236 ·
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
riscv/riscv-unified-db#2624 · 1 reacción ·
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100