2010-03-06 6 views
10

¿Por qué Ruby y Ruby on Rails (1.8.6 One Click Installer, base de datos local) son tan lentos en Windows?Rake Test Very Slow en Windows

  • ruby ​​script/server - 30 segundos
  • prueba rastrillo - 45 segundos
  • etc.

Sin embargo, cuando me pop a una máquina Linux mucho más lento, es prácticamente instantánea. Lo he comprobado todo: no hay procesos de CPU significativos en ejecución, no hay problemas de red ... y así sucesivamente.

Diablos, estaría contento con solo una salida detallada que al menos me dijera dónde se estaba descomponiendo. ¿Alguna sugerencia?

+0

¿Está utilizando una base de datos remota? –

+0

No, solo con la base de datos local. – aronchick

Respuesta

6

En general, el intérprete de resonancia magnética de Ruby simplemente no está optimizado para la velocidad en Windows. También puede ejecutarlo en modo de desarrollo en Windows vs modo de producción en las otras máquinas. Rails se ejecuta mucho más lento en el modo de desarrollo, ya que recarga todas sus clases en cada solicitud.

1.8.6 es una versión ruby ​​muy antigua. Lanzado hace casi 3 años. Considere la posibilidad de actualizar a 1.9 (o al menos 1.8.7). O cambiando a JRuby. Todas estas opciones probablemente conducirán a una mejora significativa en el rendimiento.

1.8.7 debe ser totalmente compatible con 1.8.6. 1.9 tiene un intérprete completamente nuevo que funciona 2.5 veces más rápido (aunque tiene la tendencia a colgarse ocasionalmente en las ventanas). JRuby puede ser la solución ideal para ti, ya que puedes ejecutarla en compatibilidad con 1.8 o 1.9 y es muy estable, pero no admite gemas con extensiones C y requiere un adaptador de base de datos diferente.

Una última opción sería intentar ejecutar Rails dentro de un VMWare con CentOS u otra distribución de Linux.

+5

Además, es posible que el OP esté usando el instalador One-Click, que ahora es bastante viejo y reemplazado por RubyInstaller. RubyInstaller for 1.8.7 es probablemente el mínimo que debería usarse en este punto. –

+0

Creo que estoy usando el instalador de 1 clic (realmente deberían eliminarlo de ruby-lang.org). Trataré de subir a 1.9.1 aunque ese no sea nuestro entorno de producción. ¿JRuby es significativamente más rápido? – aronchick

+0

Creo que planean eliminarlo una vez que Rubyinstaller "sale de RC" – rogerdpack

2

La razón es que las estadísticas de archivos en Windows son tremendamente lentas y, como Ruby está escrito en Linux (y optimizado para Linux), no ha habido mucho trabajo para hacerlo más rápido.

El uso de rubyinstaller.org (1.8.6 o 1.9.x) puede hacerlo más rápido. Recomendaría 1.8.6 ya que 1.9 tiene algunas ralentizaciones propias.

Si está buscando ser realmente agresivo, puede probar mi joya faster_gem_script, que intenta guardar en caché las búsquedas basadas en requisitos y así acelerar las cosas. Sin embargo, hazlo con una versión de scratch de ruby ​​:)

Desafortunadamente, Jruby tampoco es conocida por sus búsquedas extremadamente rápidas. Espero que esta situación cambie algún día. Hasta entonces, mi faster_gem_script y faster_require son la única manera que conozco de intentar acelerar un poco.

Para un aumento de velocidad podría intentar deslizadora mi cargador superior (ayuda carriles funcionen más rápido en sopor): spork https://github.com/rdp/faster_require también comprobación, que trabaja en el sopor, y jruby también funciona bien.

-rp

+0

¡Gracias! ¿Qué hay de 1.8.7? – aronchick

+0

Por cierto, ¿este trabajo ayuda en absoluto? http://jira.codehaus.org/browse/JRUBY-4073 – aronchick

+0

No he probado jruby con rieles mucho en doze - mi corazonada es que sería tan lento como MRI. Mis respuestas son las mismas para 1.8.7 que para 1.8.6 (y 1.9.x para el caso, es típicamente peor) aunque parece que 1.9.2 va a ser un poco más rápido en este aspecto que 1.9.1 [1]). [1] http://redmine.ruby-lang.org/issues/show/2723 – rogerdpack

0

ACTUALIZACIÓN: Gracias (en parte) a algunos realmente un gran trabajo en Fenix por Luis Lavena, Ruby 1.9.3-P327 es mucho, mucho más rápido en Windows. rake solía tardar más de 110 segundos en ejecutarse en 1.9.3-p125, y ahora tarda ~ 20 segundos en p327. Rails finalmente se puede usar en Windows.

Uso RubyInstaller instalar ..