2013-04-29 1 views
20

Я немного запутался в значениях пространственной и временной локальности. Я надеюсь, посмотрев на это с помощью массива, это поможет мне лучше понять это.Временная и пространственная локализация с массивами

В примере, как это: А [0] [1], А [0] [2], А [0] [3] .... и т.д.

демонстрируют ли это временное расположение? Я вижу, что к одной и той же строке обращаются много раз, но при разных смещениях ... означает ли это, что обращается к другому адресу?

Кроме того, я правильно сказать, что пример, как это: А [1], A [2], A [3] ... и т.д.

Демонстрирует пространственной местности?

Надеемся, что некоторые пояснения о том, как временная и пространственная локация работают в реальном коде, помогут мне лучше понять их.

ответ

43

Пространственная и временная локальность описывают две различные характеристики того, как программы получают доступ к данным (или инструкциям). У Википедии есть хорошая статья о 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] 
7

Говоря простыми словами,

Temporal местонахождение: Концепция, которая будет ссылаться ресурс, на который ссылается в одной точке времени снова когда-нибудь в ближайшем будущем.

Пространственная локальность. Понятие о вероятности ссылки на ресурс - это выше, если ресурс, находящийся рядом с ним, просто ссылается.

Источник (ы): Википедия