Rails инициализируется очень медленно на ruby 1.9.1
Я только что запустил приложение rails 2.3.8 на ruby 1.9.1. Чтобы попасть в консоль, запустите веб-сервер, все, что инициализирует рельсы, занимает в 3 - 4 раза больше времени в ruby 1.9, чем в ruby 1.8.7. Я использую менеджеры версий ruby, поэтому я могу легко переключаться между ruby 1.9 и ruby 1.8.7. Разница в скорости происходит как в производстве, так и в разработке. Я хочу использовать 1.9, потому что он должен работать быстрее, когда все работает, но время запуска настолько плохое, что приложение отключает Heroku при первом запросе.
Есть идеи, почему ruby 1.9 будет в 3 - 4 раза медленнее? Я не могу понять это для моей жизни.
2 ответа
Попробуйте использовать голову 1.9.2 вместо 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-голове. 1.9.2-rc1 должен выйти в этом месяце, так что это хорошая новость:)
Вероятно, это связано с тем, что ruby 1.9 использует gem_prelude (который дает большой путь загрузки) вместо обычных rubygems. Оформить заказ на длину $: - поиск выполняется один раз для каждого запроса, что приводит к дополнительному времени.
Если вы хотите по-старому (обновитесь до последней версии rubygems и) запустите ruby --disable-gems
Если вы работаете в Windows, посмотрите на мой драгоценный камень fast_require.
http://github.com/rdp/faster_require
Хотя я полагаю, теперь, когда вы упомянули об этом, это может помочь в Linux 1.9. Может быть.
GL! -rp