空間的および時間的局所性は、プログラムがデータ (または命令) にアクセスする方法の 2 つの異なる特性を表します。ウィキペディアには、参照の局所性に関する優れた記事があります。
一連の参照はspatial
、時間的に近く参照されるものが空間的にも近い場合 (近くのメモリ アドレス、ディスク上の近くのセクタなど)、局所性を持つと言われます。temporal
同じものへのアクセスが時間内にクラスター化されている場合、シーケンスは局所性を持っていると言われます。
プログラムが大きな配列のすべての要素にアクセスし、それを 1 回読み取った後、次の要素に移動し、他のすべての場所に触れるまで特定の場所へのアクセスを繰り返さない場合、空間的局所性の明らかなケースですが、そうではありません。時間的局所性。一方、プログラムが、別のランダムなサブセットに移動する前に、配列上の場所のランダムなサブセットに繰り返しアクセスすることに時間を費やしている場合、そのプログラムは時間的な局所性を持っているが、空間的な局所性を持っていないと言われます。適切に作成されたプログラムには、一緒にアクセスされるものをグループ化するデータ構造があり、空間的な局所性が保証されます。アクセスした直後にBにアクセスする可能性が高いプログラムの場合A の場合、 AとBの両方を互いに近くに割り当てる必要があります。
あなたの最初の例
A[0][1], A[0][2], A[0][3]
は空間的局所性を示しており、時間的に近くアクセスされるものは空間的に近くなります。同じものに複数回アクセスしていないため、時間的局所性は示されません。
あなたの2番目の例
A[1], A[2], A[3]
は空間的局所性も示しますが、時間的局所性は示しません。
時間的局所性を示す例を次に示します
A[1], A[2000], A[1], A[1], A[2000], A[30], A[30], A[2000], A[30], A[2000], A[30], A[4], A[4]