17

これは、この質問の直接の続きです:レールで json をレンダリングする最速の方法は何ですか?

私のアプリはデータベース クエリを実行し、JS コールバックのために JSON にレンダリングします。小さなデータセット (1 MB) の場合は少なくとも 8 秒かかり、大きなデータセット (3.5 MB) の場合は 20 秒ほどかかります。これは基本的に私のアプリをアイデアとして殺します。私のユーザーは、この種の待ち時間に我慢するつもりはありません。

multi_json と oj と yajl について読んだことがありますが、それらはインストールされていると思いますが、Gemfile でさまざまな gem をアクティブ化しようとした方法のいずれも、シリアライズ時間の改善を示していません。どちらか一方を使用していることを証明して、それらの間で結果を比較するにはどうすればよいですか? どのライブラリが実際の 'render :json => @data' 呼び出しに使用された可能性があるかを (Rails デバッグ ログまたはブラウザの JS コンソールに) 出力する方法が見つかりません。

4

2 に答える 2

27

コントローラーをいじる代わりに、次のように Rails コンソールを使用することをお勧めします。

$ rails console
Loading development environment (Rails 3.2.8)
1.8.7 :001 > MultiJson.engine
 => MultiJson::Adapters::JsonGem 

この方法で、Rails スタックを直接操作できます。

于 2012-10-01T23:33:20.680 に答える
4

コントローラーで「render :text => MultiJson.engine」を実行できることが最終的にわかりました。これにより、「MultiJson::Engines::Oj」が生成されました。

おそらく最速と思われる JSON ライブラリを既に使用していることを確認できたので、うんざりしているかもしれません。コントローラーを介して純粋なテキストを返そうとすると思います (8 秒に比べて 2 秒かかります)。それをハッシュに変換するルーチンの速度を確認します...

于 2012-05-14T20:19:03.210 に答える