2011-01-07 4 views
24

Sto usando i binari Versione 3.0.3 e rubino Versione 1.9.2p136 (2010-12-15) su un Intel Core 2 Duo 2,6 Ghz con Ram da 4 GB e Windows Vista Business SP2 senza altre applicazioni (pesanti) in esecuzione. Ho già letto che lo sviluppo di rails su Windows è più lento che su Unices e la maggior parte della gente lo fa per non consigliarlo, ma questo è sciocco.Rails su Windows è così lento (rails -v impiega 4 secondi)

Non riesco a pensare a nessuna buona ragione per utilizzare 4 secondi per visualizzare un numero di versione semplice. E i binari generano esigenze fino a 10 secondi per il completamento!

Qualcosa nel mio setup deve essere sbagliato (almeno lo spero).

Qualcuno ha una buona idea come procedere? Grazie in anticipo!

+2

Windows è ottimizzato pesantemente per compatibilità con le versioni precedenti e elenchi di funzionalità. Non per le prestazioni di linguaggi di scripting con esecuzione dinamica, interpretati e basati su runtime. Usa Linux. È possibile eseguire Linux in una finestra all'interno di Windows se si utilizza VirtualBox. – yfeldblum

+3

Dopo alcuni mesi di combattimento con Rails su Windows, sto usando Ubuntu in VirtualBox. È stato fantastico finora. Ma sono assolutamente d'accordo sul fatto che sia ridicolo il fatto che gli utenti di Windows siano spesso fuori al freddo quando si tratta di Rails e, in misura minore, di Ruby. – Zabba

+0

E, ho ospitato tutte le cose di Rails nella VM di Ubuntu, ma tutto il codice è memorizzato nell'host Windows e tutte le modifiche sono su Windows. – Zabba

risposta

20

Ci sono alcuni punti chiave che combinati generano la prestazione lenta che stai notando.

  • Le prestazioni di IO rubino (su qualsiasi versione) sono fino a 3 volte più lente rispetto alle controparti Linux. Questo perché molti hop non ottimizzati nella base di codice di Windows di Ruby. Ciò richiede ulteriori analisi, indagini e ottimizzazioni non eseguite fino ad oggi.
  • Ruby 1.9.2 produce più chiamate stat() per file, il che può aumentare il rallentamento di Ruby stesso. Questo non è presente in Ruby 1.8.6 o 1.8.7. Questo è stato risolto anche in Ruby 1.9.3 (trunk) non ancora rilasciato.
  • Progetti come Rails richiedono circa 500 file, che combinati con i punti sopra riportati fanno di Ruby per Windows la visione di molte persone.

Ora, ci sono soluzioni per questo, alcuni semplici e alcuni complessi.

  1. Torna a Ruby 1.8.7 anziché Ruby 1.9.2. Ciò porterà di nuovo un certo livello di velocità alla tua applicazione. A meno che tu non stia approfittando del supporto Unicode, allora 1.8.7 potrebbe funzionare per te.
  2. Guardare in strumenti come Spork per fornire scenario/biforcano per il vostro RSpec/Cetriolo
  3. Spostare il vostro sviluppo di RAM, utilizzando un ramdisk come ImDisk. Sposta sia Ruby e la tua applicazione sia il tempo di caricamento sarà ridotto (anche questo è associato alla RAM disponibile)

Spero che alcune di queste opzioni ti siano d'aiuto.

+0

L'uso di 1.8.7 ha ridotto il tempo per "rails -v" al di sotto di un secondo. È molto più veloce Grazie. – user331471

+1

Solo per salvare nuove persone un po 'di tempo: ImDisk potrebbe non avere alcun effetto sui tuoi numeri su Ruby 1.9.3. Abbiamo una serie di test che impiegano 100 secondi su Linux, richiedono ancora oltre 2 mila secondi su Windows, ram disk o nessun ram disk. – Jason

+0

@Jason i miglioramenti menzionati riguardavano il tempo di avvio, non il tempo di esecuzione. Se i tuoi test sono troppo vincolati all'I/O (rete, database, ecc.), Il completamento richiederà ancora molto tempo). Fortunatamente Ruby 2.0 ha ottenuto la patch delle prestazioni in modo che l'avvio sia più veloce. –

0

Più che probabile, è l'anti-virus che lo colpisce. Ciò combinato con i problemi di velocità di Vista probabilmente lo stanno influenzando. Sono d'accordo con Justice, eseguo Linux in una VM.

+0

Grazie. Porterebbe sollievo se migrassi a Windows 7? Volevo solo giocare un po 'e quindi è un po' eccessivo installare un Ubuntu completo. Lo prenderei in considerazione se la mia programmazione sta diventando seria come. :-) – user331471

+1

Forse, dato che Windows 7 è decisamente un po 'più veloce. – jschorr

+0

Questo è vero! Sebbene non risolva completamente il problema, disabilitare l'antivirus ha sicuramente velocizzato un po 'i binari. Soprattutto generare comandi che erano lenti da morire e ora sono accettabili. –

0

Per un aumento di velocità si potrebbe provare il mio caricatore speeder superiore (aiuta rotaie correre più veloce in Windows): https://github.com/rdp/faster_require

Inoltre Spork checkout, che funziona in Windows, e JRuby funziona anche bene.

0

si può provare a giocare con la spazzatura collecter di Ruby per fare rubino più veloce, in quanto i valori di default impostazioni delle variabili non corrispondono come le finestre funzionano vedere here forse aiuterà un po '

anche Garbage collector performance tuning

6

E' più veloce usare Ruby all'interno di una Ubuntu Virtual Machine piuttosto che utilizzarlo direttamente con Windows.

Una buona opzione è usare Vagrant: sviluppi sul tuo IDE di Windows, i file sono "condivisi" con la VM di Ubuntu, esegui "vagrant ssh", quindi esegui "rails server" o qualsiasi altro comando tu " Mi piace correre. Ci sono anche altri vantaggi:

  • Non è necessario installare RVM o cambiare versioni di ruby, basta usare una VM per ogni progetto. VM può essere di piccole dimensioni, come 500MB di dati, utilizzando fino a 100 MB di RAM, ma YMMV
  • Non è necessario preoccuparsi di compatibilità del gioiello con Windows

Date un'occhiata: http://www.vagrantup.com/