Rails генерирует код в рантайме — и это ускоряет enum в 5 раз

Rails Is a JIT Compiler

Rails генерирует код в рантайме — и это ускоряет enum в 5 раз

Автор разбирает, как Rails реализует enum через define_method и public_send, и почему это медленно. Замена на module_eval со статически вшитым значением дала огромный прирост: на ZJIT производительность выросла с 3,8 до 18,5 млн вызовов в секунду. По пути пришлось решить проблемы с необычными именами enum и с плавающей точкой. Вывод прост: статика лучше динамики, а оптимизировать можно прямо в апстриме.

Статика лучше динамики. Вшивайте эти константы в код.

Ещё за этот день

2026-10-24