2010-05-26 9 views
20

Ich habe gerade meine Rails 2.3.8 App auf Ruby 1.9.1 ausgeführt. Um in die Konsole zu gelangen, starten Sie den Webserver, alles, was Schienen initialisiert, dauert 3 bis 4 mal länger in Ruby 1.9 als in Ruby 1.8.7. Ich benutze Ruby Version Manager, so kann ich einfach zwischen Ruby 1.9 und Ruby 1.8.7 wechseln. Der Geschwindigkeitsunterschied tritt sowohl in der Produktion als auch in der Entwicklung auf. Ich möchte 1.9 verwenden, weil es schneller laufen muss, sobald alles läuft, aber die Startzeit ist so schlecht, dass die App auf Heroku auf die erste Anfrage hin ausgeht.Rails initialisiert extrem langsam auf Ruby 1.9.1

Irgendwelche Ideen, warum Ruby 1.9 wäre 3 - 4 mal langsamer? Ich kann es für mein Leben nicht herausfinden.

+0

Oder herauszufinden, wo es seine Zeit verbringt. –

+0

Ich habe bestätigt, dass dieses Problem mit einer neuen Schienen-App besteht. Es ist also definitiv kein Juwel oder etwas Anwendungsspezifisches. –

+0

Wenn Sie 3 - 4 mal langsamer sagen, wie lange dauert es in Sekunden? Wenn ruby1.9 3 Sekunden zu ruby1.8 dauert, haben Sie wahrscheinlich andere Probleme als wenn ruby1.9 60 Sekunden dauert und ruby1.8 20 Sekunden dauert! – nfm

Antwort

6

Verwenden Sie 1.9.2-Kopf statt 1.9.1. Es ist die recommended version für Rails 3, also können Sie mehr Glück haben. Rails 2.3.8 startet sehr schnell am 1.9.2-Kopf von den Tests, die ich gerade lokal ausgeführt habe (mit Authlogic auch installiert, BTW).

Wenn Sie RVM verwenden, geben Sie Folgendes:

rvm install 1.9.2-head 
rvm use 1.9.2-head 

Edit: Ich habe versucht, 1.9.1 P378 mit der gleichen App und die Startzeit dauerte etwa 13 Sekunden im Vergleich zu 5 Sekunden auf 1.9.2 -Kopf. 1.9.2-rc1 ist in diesem Monat fällig I believe, also das sind gute Nachrichten :)

+1

hat mir nicht geholfen – knoopx

0

Es ist wahrscheinlich, weil Ruby 1.9 Gem_Prelude verwendet (die Ihnen einen großen Lastpfad gibt) anstelle von normalen Rubygems. Kasse die Länge von $: - die für jeden einmal gesucht werden benötigt, was zusätzliche Zeit

Wenn Sie es auf die alte Weise wollen, (Upgrade auf die neueste Version von rubygems und) lief Rubin disable-gems

Wenn Sie auf Windows sind, werfen Sie einen Blick in mein faster_require-Juwel.

http://github.com/rdp/faster_require

Obwohl ich nehme an, jetzt, wo du es erwähnst, könnte es in 1.9 Linux helfen. Könnte sein.

GL! -rp