Rails genera código en tiempo de ejecución: los enums se vuelven hasta 5 veces más rápidos
Rails Is a JIT Compiler

Un cambio en la implementación de los enums de Rails sustituye el envío dinámico con public_send y los bloques de define_method por métodos generados con module_eval, con los valores incrustados directamente. En los microbenchmarks, shippable? pasa de 3,8M a 18,5M iteraciones por segundo con ZJIT. El artículo defiende que, cuando la biblioteca ya genera código, conviene arreglar el rendimiento en el propio proyecto en lugar de recurrir a un compilador externo.
No hay ninguna razón para usar public_send para el despacho de métodos si conoces el nombre de forma estática: no se cachea y arrastra mucha más maquinaria de la que necesitamos.
- matltc
Si esto te ha parecido interesante, y sobre todo si escribes Ruby, no puedo recomendar Metaprogramming Ruby lo suficiente. Cambió fundamentalmente mi forma de pensar sobre la programación y me abrió la mente a lo que es posible cuando uno se libera de las mejores prácticas dogmáticas y genéricas. Cubre estos temas con gran detalle y usa ejemplos de ActiveRecord y de las implementaciones de muchos otros gems.
- twiss
Un poco fuera de tema, pero si `:status` es un enum, entonces `paid? && !refunded?` es equivalente a `paid?`
- WesolyKubeczek
Abre el artículo
> El título era un cebo para que abrieras este artículo. Pero
Cierra el artículo