Пространственная и временная локальность описывают две различные характеристики того, как программы получают доступ к данным (или инструкциям). У Википедии есть хорошая статья о locality of reference.
. Последовательность ссылок, как говорят, имеет локальную точку spatial
, если близкие по времени объекты близки по времени (близкие адреса памяти, соседние сектора на диске и т. Д.). Говорят, что последовательность имеет temporal
, если доступ к одной и той же вещи группируется во времени.
Если программа обращается к каждому элементу в большом массиве и читает его один раз, а затем переходит к следующему элементу и не повторяет доступ к любому данному местоположению до тех пор, пока он не коснется любого другого местоположения, тогда это явный случай Пространство местность, но не temporal местность. С другой стороны, если программа тратит время на неоднократный доступ к случайному подмножеству местоположений в массиве, прежде чем переходить к другому случайному подмножеству, говорят, что оно имеет временное местонахождение, но не пространственный. Хорошо написанная программа будет иметь структуры данных, которые объединяют вещи, к которым обращаются вместе, обеспечивая таким образом пространственный местность. Если программа может получить доступ к B вскоре после того, как он обращается тогда как и B должны выделяться рядом друг с другом.
Ваш первый пример
A[0][1], A[0][2], A[0][3]
показывает пространственная местность, вещи, которые доступны близко по времени близки в пространстве. Он не показывает temporal, потому что вы не обращались к одной и той же вещи более одного раза.
Ваш второй пример
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]