更新 2这是 Ruby 1.9.2 加载文件方式的一个已知错误/功能。 http://twitter.com/#!/rails/status/72801149769621504
更新:这开始是一个问题,但经过一段时间的研究后,我认为它可能无法修复。我想我会发布这个,以防其他人看到同样的事情并且想知道 rails 和 bundler 内部发生了什么。
还有其他人在他们的 Rails 3 应用程序中看到很长的加载时间吗?我在 environment.rb、application.rb、boot.rb 和 railties/lib/rails/initializable.rb 中放置了计时器。时间以秒为单位,经过的时间是自上次记录时间以来的时间。生产加载时间需要更长的时间。部分原因是硬件较少,也来自 eager_load!(也许来自 Thin vs Mongrel)。看起来 Bundler 占用了很大一部分加载时间,我想这是可以预料的。我在 dev 和 prod 中测试了一个应用程序,在 dev 中测试了一个空白应用程序。我测试了 2 个应用服务器只是为了看看它是否是 Thin 导致的。我在产品中也看到了与乘客类似的事情(这使得它在 2.2.15 中无法使用产卵行为)。我针对 edge Rails 进行了测试,开发中的性能在 14.5 秒和 14.2 秒之间稍差。如果我删除我的测试依赖项,它可以节省 2-3 秒,但这在我运行测试时没有帮助。我想在我的测试运行之前等待 5 分钟让我的所有瘦实例重新启动并等待 15 秒只是有点烦人,但在这一点上这是一个可以接受的权衡,因为我在 Rails 3 中获得了生产力。如果有人有任何有助于加快速度的想法,我全神贯注。以下是测试结果:
注意:我在 Rails 2.3 中的应用程序在 dev 中加载不到 3 秒(尽管自从迁移到 rails3 后,我已经将一些代码转换为引擎并添加了 haml 和 twitter_oauth gem)
**使用 Rails 3RC 和 Ruby 1.9.2rc2 进行的所有测试
Prod with Thin - CentOS 5.5,Rackspace 云服务器 2GB 实例
测试应用程序 #1,具有 24 个 gem 依赖项
启动 env.rb - Total=0 启动 app.rb - 0.00110546 已过。总计=0.001180052 启动 boot.rb - 0.000600488 已过。总计=0.00178644 结束 boot.rb - 0.7935529 已过。总计=0.795507318 开始需要 rails/all - 0.000189127 已过。总计=0.795701199 结束需要 rails/all - 1.086998364已过。总计=1.882735263 启动 Bundler 要求 - 0.000109708 已过。总计=1.88285043 end Bundler 要求 - 8.955853243已过。总计=10.838746673 结束 app.rb - 0.062975913 已过。总计=10.901753753 # /railties-3.0.0.rc/lib/rails/initializable.rb 开始运行初始化程序 - 0.000145906 已过。总计=10.901910186 load_environment_config - 0.116689774 已过。总计=11.018632298 initialize_cache - 0.246161343 已过。总计=11.320543397 active_record.initialize_database - 0.080047485 已过。总计=11.400961893 bootstrap_hook - 1.034189984 已过。总计=12.451309104 active_support.initialize_time_zone - 1.969821814 已过。总计=14.448777651 action_controller.set_configs - 0.594991537 已过。总计=15.044692126 will_paginate.active_record - 0.324460921 已过。总计=15.386837641 will_paginate.action_view - 1.904889132已过。总计=17.328981523 add_view_paths - 0.087811847 已过。总计=17.42011881 load_init_rb - 0.151282681 已过。总计=17.709093173 load_init_rb - 0.362241273 已过。总计=18.071865548 load_config_initializers - 0.144051305 已过。总计=18.217433492 build_middleware_stack - 2.569453884已过。总计=20.826842081 急切的加载!- 4.165919064已过。总计=24.99280168 Finisher_hook - 0.48795935 已过。总计=25.480807439 repopulate_roles - 0.504085662 已过。总计=25.984901297 结束运行初始化程序 - ~0.00005 已过。总计=25.985617783 结束 env.rb - ~0.00006 已过。总计=25.985683903
Dev with Mongrel - Max OSX 10.5.8, 2.66 Core2duo, 4GB RAM
Test App #1 与 24 个 gem 依赖项
启动 boot.rb (Bundler.setup) - 2.0e-05 已过。总计=3.1e-05 结束 boot.rb (Bundler.setup) - 2.352435已过。总计=2.352915 启动 app.rb - 0.084945 已过。总计=2.437866 开始需要 rails/all - 0.000181 已过。总计=2.438049 结束需要 rails/all - 0.489425 已过。总计=2.927485 启动 Bundler.require(:default, Rails.env) - 5.6e-05 已过。总计=2.927544 end Bundler.require(:default, Rails.env) - 5.16162已过。总计=8.089177 结束 app.rb - 0.025972 已过。总计=8.11516 启动 env.rb - 0.084153 已过。总计=8.199329 # /railties-3.0.0.rc/lib/rails/initializable.rb 启动 run_initializers - 0.002709 已过。总计=8.202042 初始化缓存 - 0.089231 已过。总计=8.518005 bootstrap_hook - 0.602342 已过。总计=9.192564 active_support.initialize_time_zone - 0.901676已过。总计=10.10115 action_controller.set_configs - 0.375864 已过。总计=10.477565 will_paginate.active_record - 0.207447 已过。总计=10.694479 will_paginate.action_view - 1.041412已过。总计=11.75974 load_init_rb - 0.051938 已过。总计=11.879547 load_init_rb - 0.082936 已过。总计=12.001311 load_init_rb - 0.18798 已过。总计=12.189555 load_config_initializers - 0.079461 已过。总计=12.269971 build_middleware_stack - 1.390042已过。总计=13.729273 Finisher_hook - 0.082274 已过。总计=13.811648 repopulate_roles - 0.350287 已过。总计=14.161941 结束 run_initializers - 3.0e-06 已过。总计=14.177869 结束 env.rb - 0.000127 已过。总计=14.178002
使用 Mongrel Test App #2 进行开发,具有 2 个 gem 依赖项
启动 boot.rb (Bundler.setup) - Total=0 结束 boot.rb (Bundler.setup) - 1.724158已过。总计=1.724199 启动 app.rb - 0.041006 已过。总计=1.765211 开始需要 rails - 0.000151 已过。总计=1.765364 结束需要导轨 - 0.360051 已过。总计=2.125426 启动 Bundler.require(:default, Rails.env) - 5.5e-05 已过。总计=2.125485 end Bundler.require(:default, Rails.env) - 0.008396 已过。总计=2.133889 结束 app.rb - 0.007805 已过。总计=2.141704 启动 env.rb - 0.16541 已过。总计=2.307128 启动 run_initializers - 0.00031 已过。总计=2.307442 load_active_support - 0.24045 已过。总计=2.579421 active_support.initialize_time_zone - 0.206237 已过。总计=2.837663 action_controller.deprecated_routes - 0.210291 已过。总计=3.048634 build_middleware_stack - 0.220663 已过。总计=3.273035 结束 run_initializers - 3.0e-06 已过。总计=3.29339 结束 env.rb - 8.7e-05 已过。总计=3.293483