0

こんにちは、

ユーザーが要求したときに計算を実行するのではなく、一連の事前計算を実行して結果をデータベースに保存することで、サイトを大幅に高速化できるRailsアプリケーションを開発しています。

(数十万のデータベース行からの数百万回の反復について話していることに注意してください。私の推定では、実行できるすべての計算を完了するには、私の Macbook Air で約 4 日かかります。)

私の質問は次のとおりです。Rails / ActiveRecord フレームワークからこれらの計算を取り除き、純粋な Ruby コードを使用してデータベースを使用せずにすべてを完了することに利点はありますか? 結果を書き出すときに、ファイル I/O がボトルネックになるのでしょうか? この問題にどのように取り組みますか?

ありがとう!

4

1 に答える 1

1

私が思うに、計算に時間がかかるのであれば、Rails だけでなく Ruby からも離れるべきです。Ruby は、C や C++ に比べて非常に遅いです。したがって、それらを使用して、結果をデータベース (または Rails アプリケーションから到達可能な他の場所) に保存させます。その後、レールは結果を読み取ることができます。それが実行可能なオプションである場合、SQL db を使用している場合は、db プロシージャの使用を検討できます。これらは、Ruby の同じアルゴリズムよりもはるかに高速です。

もちろん、いつ (再) 計算を開始するかはあなた次第です。時間ベースの cron トリガーまたはシステムの条件に基づく。

于 2012-05-25T19:08:25.913 に答える