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

Другие вопросы по тегам