このシナリオ例を見てみましょう:
出力を計算するために数学的な平方根と立方根 (処理が遅い) を含む非常に複雑な関数が存在します。例として、関数が 2 つのパラメーターaとbを受け入れ、両方の値 a と b の入力範囲が明確に定義されていると仮定します。入力値aとbの範囲が 0 から 100 であると仮定します。
したがって、基本的にfn(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 のようなアプリを構築している例を考えてみましょう。ユーザーがサーバーに送信した画像を処理するのにかかる時間と、処理された画像を返すのにかかる時間は、最適なユーザー エクスペリエンスのために最小限に抑える必要があります。このような状況では、画像の処理にかかる時間を最小限に抑えることが重要です。さらに悪いことに、このような処理要求の数が大きくなると、スケーラビリティの問題が発生します。
したがって、このような状況で最適な方法でもある上記の方法のいずれかを選択する必要があります。
私の状況の詳細(必要な場合):
フレームワーク: Ruby on Rails、データベース: MongodB