Это одновременно временная или пространственная локализация? - PullRequest
1 голос
/ 27 октября 2011

Я хотел спросить о пространственном и временном местоположении . Если я нахожусь в цикле с циклической переменной, скажем i , и перебираю массив с именем arr[i], то, когда я обращаюсь к arr [i], то, по моему мнению, это должна быть как временная, так и пространственная локальность, поскольку сначала я получу доступ i и выясните, что такое i, а затем перейдите к этому индексу. Я делаю две вещи здесь,

  1. Доступ i (Временная локация).
  2. Доступ к адресу arr[i] (пространственная местность).

Пожалуйста, скажите мне, прав ли я в этой определенной ситуации.
Заранее спасибо.

1 Ответ

3 голосов
/ 27 октября 2011

Временная локализация: что происходит за короткий промежуток времени? Если это так, они имеют временную локализацию. Если нет, то нет.

Пространственная локализация: находятся ли вещи близко друг к другу в пространстве (то есть в памяти)? Если это так, они имеют пространственную локализацию. Если нет, то нет.

Обратите внимание, что при использовании этих терминов вам необходимо указать, что является локальным для чего; в изоляции они мало что значат.

Элементы arr будут (предполагая обычно подразумеваемую реализацию «массива», то есть элементов данных, размещенных в непрерывном блоке), иметь пространственную локальность по отношению друг к другу. Вы не знаете (по крайней мере из всего, что указано в вопросе), где i будет располагаться относительно arr, поэтому вы не можете сказать, демонстрируют ли эти объекты пространственную локальность по отношению друг к другу или нет.

Операторы, обращающиеся к i и arr[i], происходят один за другим, поэтому они демонстрируют временную локальность, предполагая, что работа, которую вы выполняете над каждым элементом массива, обходится дешево; с этим допущением, ссылки на различные элементы arr в последующих итерациях также будут демонстрировать временную локальность. Однако, если для каждой итерации цикла вы вызываете какую-то функцию, которая занимает много времени между доступом к i и arr, то больше не будет правдой, что эти обращения демонстрируют временную локальность.

...