На январских обновил свой CLI для разбора логов на Ruby 4.0 и заодно сравнил JIT. Утилита на чистом Ruby, без Rails: читает файлы по 1-2 ГБ, регулярки, группировка в хэши. Прогон на одном и том же файле 1,4 ГБ, по пять запусков, беру медиану:
Ruby 3.4, без JIT 41,2 с
Ruby 3.4, YJIT 29,7 с
Ruby 4.0, без JIT 40,5 с
Ruby 4.0, YJIT 28,9 с
Ruby 4.0, ZJIT 35,6 с
Новый JIT на моей задаче пока заметно отстаёт от YJIT, хотя интерпретатор обгоняет. Включал флагами --yjit и --zjit. Кто-нибудь пробовал его на вебе?
На вебе у меня вышло похоже: на нагрузочном тесте с YJIT медиана на 4.0 почти та же, что на 3.4, а новый JIT медленнее YJIT процентов на 15. Он молодой, устроен иначе, и сами разработчики пишут, что для прода рано. Я бы весь этот год оставался на YJIT и проверял новый на каждом минорном релизе.
Самый быстрый вариант 29 секунд на 1,4 ГБ. На Go такая штука упирается в диск, секунды четыре. Без обид, просто для масштаба
а для --zjit при сборке через rbenv что-то особое нужно? поставил 4.0, yjit работает, а на --zjit пишет, что такой опции нет