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

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

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

  2. twiss

    Un poco fuera de tema, pero si `:status` es un enum, entonces `paid? && !refunded?` es equivalente a `paid?`

  3. WesolyKubeczek

    Abre el artículo

    > El título era un cebo para que abrieras este artículo. Pero

    Cierra el artículo

Más de este día

2026-10-24