2011-08-01 9 views
2

通常、データベースへのアクセスは、時間の点で最もコストがかかる傾向があります。Railsアプリケーションは、データベースではなくボトルネックになるほど遅くなる可能性がありますか?

しかし、Rubyは最も遅い実行言語(既存の抽象化の上に構築された抽象を表すレールを持つ)であるため、レールアプリケーションはほとんどのクエリをDBに実行する傾向がありますか?

+0

この質問は、パフォーマンススケーラビリティとパフォーマンス指向の言語に関する広範な議論を呼び起こす可能性があり、それは完全に仮説的です(StackOverflowでは明示的に許可されていません)。 – coreyward

答えて

2

これは本当に主観的な質問ですが、要するに、当然のことながら、あなたのコアビジネスの懸念事項に応じて、DBよりもボトルネックになる可能性があります。たとえば、データベースを持っている唯一の理由は、ログインを要求してusersテーブルを1回呼び出すだけですが、あなたのウェブサイトは画像処理に関するもので、計算に費やされるものはたくさんあります。データベースよりもあなたに懸念があります。

あなたが仕事のために適切なツールを選ぶべきであるという年齢のアイデアは、決して真実であることは決してありません。

+0

この質問は、回答者が参照やハードデータを提供した場合、それほど主観的ではありません。 –

0

私はRails開発をこれ以上行わないので、このトピックについてはあまり経験がありません。しかし、アーロンの「テンダーロブ」パターソンは、「このコードはなぜそんなに遅いの? (slideshare,confreaks video)ここで、Rubyの実装は準最適だったため、以前はActiveRecordが遅かったと話しました。

0

Railsは他の「アクティブな」Rubyフレームワーク(Camping、Sinatra、Merb、Padrino、Ramaze)の中で最も遅いフレームワークです。 最近の「非科学的」ベンチマーク:http://pastie.org/2294509(ベンチマークのソースパッドリノフレームワークのgithubリポジトリ)が見つかりました。

速度が遅いため、ボトルネックの原因となるはずはありませんが、アプリケーションを開発する際には必ず経験してください:非常に遅い起動時間、遅いレーキタスク、非常に遅いテストスイート、高いメモリフットプリント。

これは妥協です。 Railsは豊富な機能を備えており、大規模で活発なコミュニティで長年にわたって使用されています。

残念ながら、新しいRailsバージョンごとにフレームワークが大きくなり、速度に影響を与える抽象レイヤーが増えるため、状況が改善されない場合があります。これは私の側の純粋な推測ですが、ユーザベースで判断すると、これらの問題を緩和するためにRails自体に大きな変更はありません。バージョン3を変更した最後のゲームでは、多くの長年の改善がもたらされましたが、パフォーマンスの向上ではなく、フレームワークのモジュール性が向上しました。

0

はい。このような画像処理、または多分かなりのデータとtravelling salesman problemで余分な刺すよう - - 可能性があり

愚かなしかし本当の例では、...

def index 
    @thing = Thing.find_by_something_not_needed params[:something_not_needed] 
    unless something_happens do 
    sleep 
    end 
end 

def something_happens; nil; end 

は今、あなたは、いくつかの複雑なロジックをしていたと想像されます死ループ私は私の愚かな例があります。その他の要因は外部ウェブ要求であり、うまくいかない可能性があります。

0

この質問は、「ポ​​ルシェはピントよりも遅いスピードにすることができますか?」と尋ねるようなものです。

平均的なミリ秒の応答時間でパフォーマンスを判断する必要があります。たとえば、アプリ内のページが太陽に平均100ミリ秒かかる場合、理論的には1秒あたり10リクエストを得ることができます。あなたが調査し、60msがいくつかの文字列を解析するのに費やされているために100msがあると判断した場合、縮小または無視することができる文字列、本当はRubyまたはRailsではありませんか?

Ruby/Railsは、ほとんどのWebアプリケーションではfast enoughです。私はあなたがRails以外のものを使用するように自分自身を説得しようとしていると思います。 Railsを使用したくない場合は、それは問題ありません。しかし、悪いプログラミングによって遅くなるかもしれないので、Railsを放棄しないでください。これはどの言語でも当てはまります。

代わりに、Rails(またはSinatraまたはPadrinoまたはDjango)を使用して楽しくお楽しみください。パフォーマンスが問題になると、パフォーマンスが心配です。

関連する問題