2010-03-06 5 views
10

Pourquoi Ruby et Ruby on Rails (1.8.6 One Click Installer, base de données locale) sont-ils si lents sur Windows?Rake Test très lent dans Windows

  • scripts Ruby/serveur - 30 secondes
  • test râteau - 45 secondes
  • etc.

Pourtant, quand je pop vers une boîte Linux beaucoup plus lent, il est quasi-instantanée. J'ai tout vérifié - aucun processus CPU important en cours d'exécution, pas de problèmes de réseau ... et ainsi de suite. Heck, je serais heureux avec juste une sortie verbeuse qui au moins m'a dit où il se décomposait. Aucune suggestion?

+0

utilisez-vous une base de données distante? –

+0

Non, en utilisant uniquement la base de données locale. – aronchick

Répondre

6

En général, l'interpréteur MRI de Ruby n'est pas optimisé pour la vitesse sur les fenêtres. Vous pouvez également l'exécuter en mode développement sur Windows vs mode de production sur les autres machines. Rails fonctionne beaucoup plus lentement en mode développement car il recharge toutes vos classes à chaque requête. Le 1.8.6 est une très vieille version de rubis. Sortie il y a presque 3 ans. Vous devriez fortement envisager de passer à la version 1.9 (ou au moins à la version 1.8.7). Ou passer à JRuby. Toutes ces options conduiront probablement à une amélioration significative des performances. 1.8.7 devrait être entièrement compatible avec 1.8.6. 1.9 a un nouvel interpréteur qui fonctionne 2,5 fois plus vite (bien qu'il ait tendance à se bloquer de temps en temps sur Windows). JRuby peut être la solution idéale pour vous puisque vous pouvez l'utiliser en compatibilité pour 1.8 ou 1.9 et il est très stable, mais il ne supporte pas les gemmes avec des extensions C et nécessite un adaptateur de base de données différent. Une dernière option serait d'essayer d'exécuter Rails à l'intérieur d'un VMWare avec CentOS ou une autre distribution Linux.

+5

En outre, il est possible que l'OP utilise le programme d'installation One-Click, qui est maintenant assez ancien et remplacé par RubyInstaller. Le RubyInstaller pour 1.8.7 est probablement le minimum qui devrait être utilisé à ce stade. –

+0

Je crois que je _am_ en utilisant le programme d'installation en 1 clic (ils devraient vraiment enlever cela de la ruby-lang.org). Je vais essayer de passer à 1.9.1 même si ce n'est pas notre environnement de production. JRuby est-il significativement plus rapide? – aronchick

+0

Je pense qu'ils prévoient de l'enlever une fois rubyinstaller "sort de RC" – rogerdpack

2

La raison en est que les statistiques de fichiers dans Windows sont terriblement lentes, et, depuis que Ruby est écrit sous Linux (et optimisé pour Linux), il n'y a pas eu beaucoup de travail pour le rendre plus rapide. L'utilisation de rubyinstaller.org (1.8.6 ou 1.9.x) peut le rendre plus rapide - je recommande le 1.8.6 puisque 1.9 a ses propres ralentissements. Si vous cherchez à devenir vraiment agressif, vous pouvez essayer ma gemme faster_gem_script, qui essaie de mettre en cache les recherches basées sur les besoins et ainsi accélérer les choses. Faites-le avec une version scratch de ruby, bien que :)

Malheureusement, Jruby n'est également pas connu pour ses recherches extrêmement rapides. Espérons que cette situation changera un jour. Jusque-là, je ne connais que les raccourcis faster_gem_script et faster_require pour essayer d'accélérer.

Pour un, vous pouvez essayer speedup mon chargeur speeder supérieur (aide rails courir plus vite en demi-sommeil): https://github.com/rdp/faster_require également la caisse Spork, qui travaille à somnoler et JRuby fonctionne aussi bien.

-rp

+0

Merci! Qu'en est-il de 1.8.7? – aronchick

+0

BTW, ce travail aide-t-il du tout? http://jira.codehaus.org/browse/JRUBY-4073 – aronchick

+0

Je n'ai pas essayé jruby avec des rails beaucoup sur le somnoler - mon intuition est-il à peu près aussi lent que l'IRM. Mes réponses sont les mêmes pour 1.8.7 que pour 1.8.6 (et 1.9.x d'ailleurs, c'est généralement pire) mais il semble que 1.9.2 va être un peu plus rapide à cet égard que 1.9.1 [1]). [1] http://redmine.ruby-lang.org/issues/show/2723 – rogerdpack

0

MISE À JOUR: Merci (en partie) à un travail vraiment super sur Fenix par Luis Lavena, Ruby 1.9.3-P327 est beaucoup, beaucoup plus rapide sur Windows. rake utilisé pour prendre plus de 110 secondes à exécuter sur 1.9.3-p125, et prend maintenant ~ 20 secondes sur p327. Rails est enfin utilisable sur Windows !!

Utilisez RubyInstaller installer ..