2010-05-26 6 views
20

Acabo de ejecutar mi aplicación Rails 2.3.8 en ruby ​​1.9.1. Para acceder a la consola, inicie el servidor web, cualquier cosa que inicialice los rieles, tarda de 3 a 4 veces más en ruby ​​1.9 que en ruby ​​1.8.7. Estoy usando administradores de versiones de ruby ​​para poder cambiar fácilmente entre ruby ​​1.9 y ruby ​​1.8.7. La diferencia de velocidad ocurre tanto en producción como en desarrollo. Quiero usar 1.9 porque debe ser más rápido una vez que todo se está ejecutando, pero el tiempo de inicio es tan malo que la aplicación se agota en Heroku en la primera solicitud.Rails se inicializa extremadamente lento en ruby ​​1.9.1

¿Alguna idea de por qué ruby ​​1.9 sería 3 - 4 veces más lento? No puedo entenderlo por mi vida.

+0

O descubra dónde está gastando su tiempo. –

+0

He confirmado que este problema existe con una nueva aplicación de rieles. Por lo tanto, definitivamente no es una joya o algo específico de la aplicación. –

+0

Cuando dices 3 - 4 veces más lento, ¿cuánto tardas en segundos? Si ruby1.9 tarda 3 segundos en ruby1.8's de 1 segundo, es probable que tengas problemas diferentes a los de si ruby1.9 tarda 60 segundos y ruby1.8 tarda 20 segundos. – nfm

Respuesta

6

Intente utilizar 1.9.2-head en lugar de 1.9.1. Es el recommended version para Rails 3, por lo que puede tener mejor suerte. Rails 2.3.8 se inicia muy rápido en 1.9.2-cabeza de las pruebas que acabo de ejecutar localmente (con Authlogic instalado también, por cierto).

Si está utilizando RVM, escriba lo siguiente:

rvm install 1.9.2-head 
rvm use 1.9.2-head 

Editar: Probé 1.9.1 P378 con la misma aplicación y el tiempo de puesta en marcha tomó alrededor de 13 segundos en comparación con los 5 segundos en 1.9.2 -cabeza. 1.9.2-rc1 saldrá este mes I believe, así que es una buena noticia :)

+1

no me sirvió – knoopx

0

Probablemente porque ruby ​​1.9 usa gem_prelude (que le da una ruta de carga grande) en lugar de rubygems normales. Su cesta de la longitud de $: - que consigue buscó una vez para cada requerir, haciendo tiempo extra

Si usted quiere que la manera antigua, (actualizar a la última versión de rubygems y) ejecutar rubí --disable-gemas

Si está en Windows, eche un vistazo a mi joya de solicitud más rápida.

http://github.com/rdp/faster_require

Aunque supongo que, ahora que lo mencionas, que podría ayudar en 1.9 Linux. Tal vez.

GL! -rp

Cuestiones relacionadas