2012-05-08 11 views
1

Ruby WebアプリケーションでCPUサイクルを節約する方法は何ですか?私のプロジェクトが拡大するにつれて、レンダリング、メソッドの実行、dbクエリの平均時間が増えています。私は60msの平均を高いと考えています。 機械コードをしっかりとコンパクトに保つ​​ための設計ガイドラインはありますか?ように - 完全にOOされている? 繰り返す反復などを避けるために、より多くの変数とメモリを使用しますか? dbクエリを統合しますか?Ruby/RailsでCPUサイクルを節約する方法は?

+1

もっと速いコードを試したいなら、javaまたはC++を試してください – xis

+0

同意してください。 Rubyは非常に強力で、素早く実行するためには優れているようですが、素早く実行するためのものではありません。そこでは最も遅い言語の1つです。しかし、Rubyに固執していても、おそらく何かをスピードアップする方法があります。 – cHao

+0

これらの方法は既存のコードに依存します。パフォーマンスの問題を絞り込む必要がないことを考慮すると、可能な最適化をカバーする書籍全体が必要になります。 – cHao

答えて

3

実際にすべてのチューニングを開始する前に、ボトルネックを見つけようとします。

CPUに問題がありますか?それはあなたのストレージシステムですか?それはあなたの方法ですか?それはあなたのDBですか?あなたのDBにidicesを使用していますか?あなたはあなたのデータベースに必要なより多くのインデックスを使用していますか?

3

ご質問の解決策はありません。

プロファイラに対してアプリケーションを実行すると、ソフトウェアのどのポイントが最も多くのリソースを消費するかが決まります。結果に満足するまで、その部分を最適化して操作を繰り返します。

パフォーマンス、ルビー教授、gperftools、およびnewrelicのようなものを測定するための豊富なツールがありますが、ある部品を見つけるためにあなたのコードをプロファイリングする(正しい)の回答のほかグーグル

+0

助けていただきありがとうございます。 –

+0

あなたは、ほとんど間違いなくあなたはまた、JRubyのhttp://www.jinspired.com/site/jxinsight-opus-for-jruby-edition-1-ためJXInsight /オーパスを試してみることができ、その後になっているはずですJRubyのVMを使用している場合0 –

0

にこのキーワードをチェックしてください実際には遅い場合は、ユースケースの方が速い別のRuby実装を調べることもできます。

参照:標準1.9インタプリタよりも高速であることが報告されている2つの選択肢のための

1

cachingを調べましたか?これは、Webアプリケーションの高速化と高トラフィックへの拡張を実現するための非常に重要なツールです。多くの場合、通常のコード最適化よりも効率的です。

+0

キャッシングは、プロファイリングと最適化後の最後のものにする必要があります。維持してデバッグするのは難しいです。ソフトウェア開発で最も難しいことの1つはキャッシュの無効化という有名な言葉を思い出してください。 – astropanic

関連する問題