Rails инициализирует чрезвычайно медленный ход на рубине 1.9.1
Я только что получил приложение rails 2.3.8, работающее на ruby 1.9.1. Чтобы попасть в консоль, запустите веб-сервер, все, что инициализирует рельсы, занимает в 3-4 раза больше рубина 1,9, чем в рубине 1.8.7. Я использую менеджеров рубиновой версии, поэтому я могу легко переключаться между ruby 1.9 и ruby 1.8.7. Разница в скорости происходит как в производстве, так и в разработке. Я хочу использовать 1.9, потому что его нужно быстрее, как только все будет запущено, но время запуска настолько плохо, что приложение синхронизируется с Heroku по первому запросу.
Любые идеи, почему ruby 1.9 будет в 3 - 4 раза медленнее? Я не могу понять, что это за жизнь.
Ответы
Ответ 1
Попробуйте использовать 1.9.2-head вместо 1.9.1. Это рекомендуемая версия для Rails 3, поэтому вам может быть повезло больше. Rails 2.3.8 запускается очень быстро на 1.9.2-голова из тестов, которые я только запускал локально (с установленным Authlogic, кстати).
Если вы используете RVM, введите следующее:
rvm install 1.9.2-head
rvm use 1.9.2-head
Изменить: я пробовал 1.9.1 p378 с тем же приложением, и время запуска заняло около 13 секунд по сравнению с 5 секундами на 1.9.2-head. 1.9.2-rc1 выйдет в этом месяце Я верю, так что хорошие новости:)
Ответ 2
Вероятно, потому, что ruby 1.9 использует gem_prelude (который дает вам большой путь загрузки) вместо обычных рубигемов. Оформить длину $: -, которая будет искать один раз для каждого запроса, вызывая дополнительное время
Если вы хотите его по-старому (обновить до последней версии rubygems и) запустить ruby --disable-gems
Если вы находитесь в окнах, загляните в мой драгоценный камень quick_require.
http://github.com/rdp/faster_require
Хотя я полагаю, теперь, когда вы упомянули об этом, это может помочь в 1.9 Linux. Может быть.
GL!
-rp