回答:
メモ化は、パラメーターに基づいて関数の戻り値をキャッシュする特定の形式のキャッシュです。
キャッシングはより一般的な用語です。たとえば、HTTPキャッシングはキャッシングですが、メモ化ではありません。
ウィキペディアは言う:
キャッシュに関連していますが、メモ化はこの最適化の特定のケースを参照し、バッファリングやページ置換などのキャッシュの形式と区別します。
If-Match
と有効期限のため。メモ化は、HTTPがそうであることがほとんどない純粋な関数に対してのみ意味があります。
私がそれらを使用したのを見てきたように、「メモ化」は「確定的関数の結果をキャッシュする」ことであり、同じ関数と入力を与えられるといつでも再現できます。
「キャッシング」には、ソース値が特定の時間に再現可能かどうかに関係なく、基本的にすべての出力バッファリング戦略が含まれます。実際、キャッシュは、ディスクまたはメモリの書き込みキャッシュなど、入力バッファリング戦略を参照するためにも使用されます。したがって、これはより一般的な用語です。
メモ化は、確定的関数の結果をキャッシュする特別な形式です。これは、関数が新しい結果(まだキャッシュにない)を計算するときにキャッシュを変更する必要があるため、関数の外部で結果をキャッシュすることはメモ化されないことを意味します。メモ化は一般的に、キャッシュを(ヘルパー関数の)追加の引数として渡すことを意味します。メモ化は、1回のアクセスで値を数回計算する必要がある関数を最適化します。キャッシングは、同じパラメーターで複数回呼び出される関数を最適化します。言い換えると、メモ化は、キャッシュが繰り返しアクセスのみを最適化するかどうかにかかわらず、最初のアクセスを最適化します。