【问题标题】:Why does Rails take 15+ seconds to load on Ruby 1.9?为什么 Rails 在 Ruby 1.9 上加载需要 15 秒以上?
【发布时间】:2010-04-15 17:02:03
【问题描述】:

在 Ruby 1.8.7 上,新的 Rails 2.3.5 环境在 4.325 秒内加载,但在 Ruby 1.9.1p378 上 需要 15.701 秒 - 有人知道为什么吗?

这是在运行 Ubuntu 的 32 位单核笔记本电脑上。

【问题讨论】:

  • 您可以通过创建一个新的 Rails 应用程序并运行自己来尝试这个基准测试:time script/runner "puts 'Finished loading'"

标签: ruby-on-rails ruby


【解决方案1】:

我遇到了和你一样的问题。在我的带有 SSD 的机器上,对于一个全新的 Rails 2.3.5 项目,REE 与 1.9.1 相比,它是 0.7 秒与 1.2 秒。在较大的 Rails 项目中,差异更为明显:类似于 20 秒与 10 秒。

这让我怀疑这是一个与 I/O 相关的问题。使用修补过的 require 和 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

说它正在加载很多代码。这可能就是我们所看到的。如果 1.9.1 对文本文件的加载感到悲观(字符串中的编码可能是候选者),这将解释我们看到的加载时间差异。

为什么它在你的机器上是 >3 而在我的机器上是

【讨论】:

    【解决方案2】:

    您很可能有一些具体问题。我有相同的设置 32 位 Ubuntu,Rails 2.3.5,我对 ruby​​1.9.1p378 和 ruby​​1.9.1p243 都没有任何问题。

    您使用哪个应用程序服务器? Mongrel、Passanger...您可以尝试使用与当前不同的一个并检查其启动速度。

    【讨论】:

    • 奇怪。我使用什么应用程序服务器实际上并不重要,我对脚本/运行器有同样的问题:-/
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多