【发布时间】:2011-02-24 05:39:57
【问题描述】:
我刚刚在 ruby 1.9.1 上运行了我的 rails 2.3.8 应用程序。要进入控制台,请启动 web 服务器,任何初始化 rails 的东西在 ruby 1.9 中比在 ruby 1.8.7 中花费的时间长 3 到 4 倍。我正在使用 ruby 版本管理器,因此我可以轻松地在 ruby 1.9 和 ruby 1.8.7 之间切换。速度差异发生在生产和开发中。我想使用 1.9,因为一旦一切都运行起来,它必须更快,但是启动时间太糟糕了,应用程序在第一次请求时在 Heroku 上超时。
知道为什么 ruby 1.9 会慢 3 到 4 倍吗?我一辈子都想不通。
【问题讨论】:
-
或者弄清楚它把时间花在了哪里。
-
我已经确认这个问题存在于一个新的 Rails 应用程序中。所以它绝对不是宝石或特定于应用程序的东西。
-
当你说慢 3 - 4 倍时,它需要多长时间?如果 ruby1.9 需要 3 秒,而 ruby1.8 需要 1 秒,那么您可能遇到的问题与 ruby1.9 需要 60 秒而 ruby1.8 需要 20 秒不同!
-
我注意到对我自己的应用程序的第一个请求也有大约 2 秒的延迟,但我认为这不会导致超时。 可能(这是一个非常暂定的“可能”)与 Rails 库中的“自动加载”与“要求”有关。 'autoload' 只会在访问关联的常量时加载给定的文件,所以它基本上是延迟加载。如果正在进行大量延迟加载,那可能正在做某事。如果只是 first 请求需要很长时间,这可能才是真正的问题。否则就直接不理我吧。
-
本地也会出现这种情况吗?
标签: ruby-on-rails ruby performance startup ruby-1.9.1