Rails инициализируется очень медленно на ruby ​​1.9.1 - PullRequest
20 голосов
/ 26 мая 2010

Я только что запустил приложение 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 ]

6 голосов
/ 09 июня 2010

Попробуйте использовать 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

Edit: я попробовал 1.9.1 p378 с тем же приложением, и время запуска заняло около 13 секунд по сравнению с 5 секундами на 1.9.2-головке. 1.9.2-rc1 выйдет в этом месяце Я верю , так что это хорошая новость:)

0 голосов
/ 21 июня 2010

Это, вероятно, потому что ruby ​​1.9 использует gem_prelude (который дает вам большой путь загрузки) вместо обычных rubygems. Оформить заказ на длину $: - поиск выполняется один раз для каждого запроса, что приводит к дополнительному времени

Если вы хотите по-старому (обновить до последней версии rubygems и), запустите ruby ​​--disable-gems

Если вы находитесь в Windows, взгляните на мой камень fast_require.

http://github.com/rdp/faster_require

Хотя я полагаю, теперь, когда вы упомянули об этом, это может помочь в Linux 1.9. Может быть.

GL! -rp

...