は、私たちはこのシナリオ例を見てみましょう:どちらが効率的ですか?リアルタイムで関数を使用して結果を計算するか、結果をデータベースから直接読み取るか?
その出力を計算するために数学的平方根と(プロセスに遅い)立方根を伴う本当に複雑な関数が存在します。例として、関数が2つのパラメータとbを受け入れ、値aとbの両方の入力範囲がと定義されているとします。です。私たちは、入力が0からだから、基本的に100
FNの範囲とすることができ aとb値と仮定しましょう(a、b)はがどちらかをリアルタイムで計算することができるか、その結果がで事前に充填することができます必要に応じてフェッチされます。
方法1:リアルタイムで計算
function fn(a,b){
result = compute_using_cuberoots(a,b)
return result
}
方法2:
我々は、データベースが対応するマッピングされた入力値と予め充填したデータベースから関数の結果をフェッチ結果:
a | b | result
0 | 0 | 12.4
1 | 0 | 14.8
2 | 0 | 18.6
. | . | .
. | . | .
100 | 100 | 1230.1
そして可能です
function fn(a,b){
result = fetch_from_db(a,b)
return result
}
私の質問:
はあなたが提唱う方法と、なぜ?なぜ、ある方法が他の方法より効率的だと思いますか?
私はこれが、私たちのプログラミングの生活の中でいつか、そしてこの質問に直面するシナリオだと思います。
ありがとうございます。
質問背景(関連しないかもしれない)
例:画像処理のようなシナリオで、それは、より頻繁にこのような状況に遭遇することが可能である入力値の範囲(R 、G、B)が知られており(0-255)、平方根および立方根の数学的計算は、サーバ要求が完了するのに時間がかかりすぎる。
Instagramのようなアプリケーションを作成する例を考えてみましょう。ユーザーがサーバーに送信したイメージを処理するのにかかる時間と、処理されたイメージを返すまでの時間は、最適なユーザー-経験。このような状況では、画像の処理に要する時間を最小限に抑えることが重要です。さらに、このような処理要求の数が増えると、スケーラビリティの問題が発生することになります。
したがって、このような状況でも最も最適な方法である前述の方法の1つを選択する必要があります。私状況に関する
詳細(を必要に応じて):
フレームワーク:Railsの上ルビー、データベース: MongoDBの
ありがとう、私が知りたいと思っていた非常に正確に。また、ユーザーエクスペリエンスのガイドラインの+1は、多くの意味があります。ありがとう!! – dsignr