8

これは、Rails コンソールの読み込み時間の改善に関する以前の質問からの補足です。

最初の素晴らしい提案は、どの gem が時間がかかりすぎるかを把握することでした。

次の回答は、後でそれらの宝石:require => nilを使用してロードすることを提案しました。

ただし、いくつかの gem では、物事を壊さずにこれを達成する方法が完全に明確ではありません。これが私たちの「最大の犯罪者」のリストです。必要な場合にのみそれらをロードするための最良の方法を誰かが提案できるでしょうか?

require gon: 2.730000 (2.870059)
require omniauth-openid: 1.410000 (1.503858)
require cancan: 2.640000 (2.707467)
require fog: 2.730000 (2.846530)
require activeadmin: 3.650000 (3.923877)

もちろん、約 1 秒以下の時間がかかるものは他にもたくさんありますが、これも加算されます... しかし、少なくとも大きなものを削除することで、すでに状況が改善されます。

後でジェムを選択的にロードして、レールのロードを高速化するにはどうすればよいですか?

4

1 に答える 1

14

あなたの質問に対する直接的な回答ではありませんが、次の 2 つのことを試してみてください。

まず、1.9.3 の Falcon パッチを試しましたか? パッチには、かなり大幅なロード時間の改善が含まれています。

RVM を使用している場合は、簡単なインストールを行うことができます。

rvm install 1.9.3 --patch falcon -n falcon

次に、GC チューニング環境変数を設定していることを確認します。デフォルトでは、Ruby は小さなスクリプトに適した GC パラメーターを割り当てますが、完全な Rails アプリには適していません。ここに私の設定がありますが、アプリケーションのニーズに基づいて独自のものを派生させたいと思うでしょう:

% env | grep RUBY_
RUBY_HEAP_MIN_SLOTS=800000
RUBY_HEAP_FREE_MIN=100000
RUBY_HEAP_SLOTS_INCREMENT=300000
RUBY_HEAP_SLOTS_GROWTH_FACTOR=1
RUBY_GC_MALLOC_LIMIT=79000000

そして、Ruby 1.9.3-p286 を使用した結果:

                    Stock     Stock+GC  Falcon   Falcon+GC
                    27.13     8.43      8.63     6.69
Stock       27.13   100.00%   31.07%    31.81%   24.66%
Stock+GC    8.43    321.83%   100.00%   102.37%  79.36%
Falcon      8.63    314.37%   97.68%    100.00%  77.52%
Falcon+GC   6.69    405.53%   126.01%   129.00%  100.00%

GC チューニング パラメーターを設定すると最大の改善が得られますが、falcon パッチを使用することで、さらに最大 26% のパフォーマンス改善を得ることができます。falcon パッチと GC パラメータを組み合わせると、起動時間が 75% 以上短縮されます。

于 2012-10-27T20:05:03.030 に答える