2010-04-15 2 views
4

Sur Ruby 1.8.7, un nouvel environnement Rails 2.3.5 se charge en 4.325 secondes, mais sur Ruby 1.9.1p378 il faut 15.701s - est-ce que quelqu'un a des idées pourquoi?Pourquoi Rails prend plus de 15 secondes à charger sur Ruby 1.9?

Il s'agit d'un ordinateur portable monocœur 32 bits exécutant Ubuntu.

+0

Vous pouvez essayer ce cas-test en créant une nouvelle application de rails et en l'exécutant: time script/runner "puts 'Chargement terminé" " –

Répondre

0

Vous avez probablement des problèmes spécifiques. J'ai la même configuration 32bit Ubuntu, Rails 2.3.5 et je n'ai pas de problèmes non plus avec ruby1.9.1p378 ni avec ruby1.9.1p243.

Quel serveur d'applications utilisez-vous? Mongrel, Passanger ... vous pouvez essayer avec un autre que le courant et vérifier sa vitesse de démarrage.

+0

Etrange. En fait, peu importe le serveur d'application que j'utilise, j'ai le même problème avec script/runner: - / –

1

Je vois le même problème que vous. Sur ma machine avec un SSD, c'est 0.7s vs 1.2s pour un tout nouveau projet Rails 2.3.5, avec REE vs. 1.9.1. Sur un plus grand projet de rails, la différence est plus prononcée: c'est quelque chose comme 20s contre 10s.

Cela m'amène à penser qu'il s'agit d'un problème lié aux E/S. Courir avec un patché besoin et la charge:

module Kernel 
    alias :load_without_tracing :load 
    alias :require_without_tracing :require 

    def load(filename, wrap=false) 
    puts "loading #{filename}" 
    load_without_tracing(filename, wrap) 
    end 
    def require(string) 
    puts "requiring #{string}" 
    require_without_tracing(string) 
    end 
end 

dit qu'il est le chargement d'un beaucoup de code. C'est peut-être ce que nous voyons. Si 1.9.1 pessimize le chargement des fichiers texte (les encodages dans les chaînes seraient un candidat probable), cela expliquerait la différence dans les temps de chargement que nous voyons.

Pourquoi ce serait un facteur de> 3 sur votre machine et < 2 sur le mien, je ne peux que deviner, cependant. Peut-être qu'un scénario comme celui-ci est un bon candidat à rapporter à la liste de diffusion de développement de MRI.

Questions connexes