2010-05-26 5 views
20

Właśnie dostałem moją aplikację szynową 2.3.8 na Ruby 1.9.1. Aby wejść na konsolę, uruchom serwer WWW, wszystko, co zainicjalizuje szyny, trwa 3-4 razy dłużej w Rubim 1.9 niż w Rubim 1.8.7. Używam menadżerów wersji ruby, więc mogę łatwo przełączać się między rubinem 1.9 a ruby ​​1.8.7. Różnica prędkości występuje zarówno w produkcji, jak iw fazie rozwoju. Chcę używać wersji 1.9, ponieważ musi działać szybciej, gdy wszystko działa, ale czas uruchamiania jest tak zły, że aplikacja zatrzymuje się na Heroku na pierwsze żądanie.Railsy inicjalizują się bardzo wolno na Ruby 1.9.1

Jakieś pomysły, dlaczego ruby ​​1.9 byłyby 3 - 4 razy wolniejsze? Nie mogę tego rozgryźć za moje życie.

+0

Albo dowiedzieć się, gdzie spędza czas. –

+0

Potwierdziłem, że ten problem istnieje ze świeżą aplikacją szyn. Więc zdecydowanie nie jest to klejnot czy jakaś konkretna aplikacja. –

+0

Kiedy mówisz 3 - 4 razy wolniej, ile czasu zajmuje to w sekundach? Jeśli ruby1.9 zajmuje 3 sekundy do ruby1.8 za 1 sekundę, prawdopodobnie masz inne problemy niż gdy ruby1.9 trwa 60 sekund, a ruby1.8 to 20 sekund! – nfm

Odpowiedz

6

Spróbuj użyć głowicy 1.9.2 zamiast 1.9.1. Jest to recommended version dla Rails 3, więc możesz mieć więcej szczęścia. Rails 2.3.8 uruchamia się bardzo szybko w wersji 1.9.2 z testów, które właśnie uruchomiłem lokalnie (z zainstalowanym Authlogic, btw).

Jeśli używasz RVM wpisz następujące:

rvm install 1.9.2-head 
rvm use 1.9.2-head 

Edit: Próbowałem 1.9.1 P378 z tej samej aplikacji, a czas uruchamiania trwało około 13 sekund w porównaniu do 5 sekund na 1.9.2 -głowa. 1.9.2-rc1 ma się pojawić w tym miesiącu I believe, więc to dobra wiadomość :)

+1

to mi nie pomogło – knoopx

0

Jest tak prawdopodobnie dlatego, że Ruby 1.9 używa gem_prelude (która daje dużą ścieżkę ładowania) zamiast zwykłych rubygemów. Kasy długość $: - czy zostanie wyszukany raz dla siebie wymagać, powodując dodatkowy czas

Jeśli chcesz to stary sposób, (upgrade do najnowszej wersji RubyGems a) uruchomić ruby ​​--disable-perełki

Jeśli jesteś w oknie, zajrzyj do mojego klejnotu szybciej_require.

http://github.com/rdp/faster_require

Choć przypuszczam, że teraz wspomnieć o tym, że może pomóc w 1,9 Linux. Może.

GL! -rp