2010-05-26 6 views
20

Я только что получил свои рельсы 2.3.8 приложение, работающее на рубине 1.9.1. Чтобы попасть в консоль, запустите веб-сервер, все, что инициализирует рельсы, занимает в 3-4 раза больше рубина 1,9, чем в рубине 1.8.7. Я использую менеджеров рубиновой версии, поэтому я могу легко переключаться между ruby ​​1.9 и ruby ​​1.8.7. Разница в скорости происходит как в производстве, так и в разработке. Я хочу использовать 1.9, потому что его нужно быстрее, как только все будет запущено, но время запуска настолько плохое, что приложение синхронизируется с Heroku по первому запросу.Рельсы инициализируются очень медленно на рубине 1.9.1

Любые идеи, почему ruby ​​1.9 будет в 3 - 4 раза медленнее? Я не могу понять, что это за жизнь.

+0

Или выяснить, где его тратить свое время. –

+0

Я подтвердил, что эта проблема существует с новым приложением рельсов. Так что это определенно не драгоценный камень или что-то конкретное приложение. –

+0

Когда вы говорите в 3 - 4 раза медленнее, сколько времени занимает секунд? Если ruby1.9 занимает 3 секунды до ruby1.8's 1 second, у вас, вероятно, будут разные проблемы, чем если ruby1.9 займет 60 секунд, а ruby1.8 займет 20 секунд! – nfm

ответ

6

Попробуйте использовать 1.9.2-head вместо 1.9.1. Это recommended version для 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 выйдет в этом месяце I believe, так что это хорошая новость :)

+1

мне это не помогло – knoopx

0

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

Если вы хотите, это старый способ (обновление до последней версии RubyGems и) запустить рубиновый --disable-самоцветы

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

http://github.com/rdp/faster_require

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

GL! -rp