我刚刚将我的Rails 2.3.8应用程序运行在Ruby 1.9.1上。要进入控制台,启动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 2.3.8应用程序运行在Ruby 1.9.1上。要进入控制台,启动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倍?我自己实在想不出原因。
这可能是因为 Ruby 1.9 使用 gem_prelude(它提供了一个较大的加载路径)而不是普通的 rubygems。请检查 $: 的长度 - 每个 require 都会搜索一次,导致额外的时间。
如果你想要旧的方式,(升级到最新版本的 rubygems 并)运行 ruby --disable-gems。
如果你在 Windows 上,请看看我的 faster_require gem。
http://github.com/rdp/faster_require
虽然我想,既然你提到了,它可能会在1.9 Linux中有所帮助。也许。
祝好! -rp