views:

122

answers:

2

On Ruby 1.8.7 a fresh Rails 2.3.5 environment loads in 4.325 seconds, but on Ruby 1.9.1p378 it takes 15.701s - does anyone have any ideas why?

This is on a 32-bit single core laptop running Ubuntu.

A: 

Most probably you have some specific issues. I have the same setup 32bit Ubuntu, Rails 2.3.5 and I don't have any problems neither with ruby1.9.1p378 neither with ruby1.9.1p243.

Which application server do you use? Mongrel, Passanger... you can try with a different one than the current and check its startup speed.

Stanislav
Strange. It actually doesn't matter what application server I use, I have the same problem with script/runner :-/
Logan Koester
+1  A: 

I'm seeing the same problem as you. On my machine with an SSD, it's 0.7s vs 1.2s for a completely new Rails 2.3.5 project, with REE vs. 1.9.1. On a larger rails project, the difference is more pronounced: It's something like 20s vs. 10s.

This leads me to suspect this is an I/O related issue. Running with a patched require and load:

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

says that it's loading a lot of code. This may be what we're seeing. If 1.9.1 pessimized the loading of text files (encodings in strings would be a likely candidate), this would explain the difference in load times we're seeing.

Why it would be a factor of >3 on your machine and <2 on mine, I can only guess, however. Maybe a scenario like this is a good candidate to report to the MRI development mailing list.

antifuchs