更新 2これは、Ruby 1.9.2 がファイルをロードする方法に関する既知のバグ/機能です。 http://twitter.com/#!/rails/status/72801149769621504
更新:これは質問として始まりましたが、これに少し取り組んだ後、修正できない可能性があると思います. 他の誰かが同じことを見て、レールとバンドラーの内部で何が起こっているのか疑問に思っている場合に備えて、これを投稿すると思いました。
Rails 3 アプリのロード時間が長いと感じている人はいますか? environment.rb、application.rb、boot.rb、railties/lib/rails/initializable.rb にタイマーを配置しました。時間は秒単位で測定され、経過時間は最後に記録された時間からの時間です。プロダクションの読み込み時間は少し長くなります。ハードウェアが少ないことと、eager_load が原因の 1 つです。(そしておそらくThin vs Mongrelから)。Bundler が読み込み時間の大きな部分を占めているように見えますが、それは当然のことだと思います。dev と prod でアプリの 1 つをテストし、dev で空のアプリを 1 つテストしました。Thin が原因であるかどうかを確認するためだけに、2 つのアプリ サーバーをテストしました。また、prod の Passenger でも同様の現象が見られます (これにより、2.2.15 のスポーン動作で使用できなくなります)。エッジ Rails に対してテストしたところ、dev のパフォーマンスは 14.5 秒と 14.2 秒でわずかに劣っていました。テストの依存関係を削除すると、2 ~ 3 秒節約できますが、テストを実行しているときには役に立ちません。すべての Thin インスタンスが再起動するまで 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 インスタンス
24 個の gem 依存関係を持つテスト アプリ #1
env.rb を開始 - 合計 = 0 app.rb を開始 - 0.00110546 経過。合計=0.001180052 boot.rb を開始 - 0.000600488 経過。合計=0.00178644 終了 boot.rb - 0.7935529 経過。合計=0.795507318 start require 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 end env.rb - ~0.00006 経過。合計=25.985683903
Dev with Mongrel - Max OSX 10.5.8、2.66 Core2duo、4GB RAM
Test App #1、24 gem の依存関係あり
start boot.rb (Bundler.setup) - 2.0e-05 経過。合計=3.1e-05 終了 boot.rb (Bundler.setup) - 2.352435経過。合計=2.352915 app.rb を開始 - 0.084945 経過。合計=2.437866 start require rails/all - 0.000181 経過。合計=2.438049 最後にレール/すべてが必要 - 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 initialize_cache - 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 end env.rb - 0.000127 経過。合計=14.178002
2 つの gem 依存関係を持つ Mongrel Test App #2 を使用した 開発
start boot.rb (Bundler.setup) - Total=0 終了 boot.rb (Bundler.setup) - 1.724158経過。合計=1.724199 app.rb を開始 - 0.041006 経過。合計=1.765211 start require 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 end env.rb - 8.7e-05 経過。合計=3.293483