これらの概念が通常出てくるハードウェアキャッシュメモリのコンテキストでは、分析は通常、いわばメモリアドレスベースで実行されません。局所性は、キャッシュとメインメモリ間で転送されるメモリブロックへのアクセスによって分析されます。
そのように考えると、コードには時間的および空間的な局所性があります。コードが読み取られたときsome_array[0]
に、そのアドレスがキャッシュに見つからない場合は、メインメモリから読み取られ、それを含むブロック全体がキャッシュにコピーされます。これは、特定のポリシーに従って他のブロックを置き換えます。たとえば、MRUです。
その後、しばらくしてアクセスsome_array[1]
すると、そのブロックはすでにキャッシュにあるため、読み取り時間は短くなります。同じブロックに短時間でアクセスしたことに注意してください。つまり、空間的および時間的な局所性があります。
キャッシュメモリは、空間的および時間的な局所性を利用して、より高速なメモリアクセスを提供します。一方、コードがこれを利用できるかどうかは、まったく別の問題です。それでも、コンパイラはほとんどの最適化を実行するため、プロファイルセッションでボトルネックを見つけた後でのみ、これに注意を払う必要があります。Linux環境では、Cachegrindはこれに最適です。