0

связанных с этим вопросом: This oneстрок/столбцы против линейной скорости индексации (пространственная локальность)

Я использую пространственную сетку, которая потенциально может получить большую (10^6 узлов) или даже больше. Я буду регулярно выполнять операции перемещения (например, частицы из узла в другую). Я не треск в информатике, но я начинаю понимать понятия линий кэша и пространственной локальности, хотя пока не очень хорошо. Итак, я блуждал, если было бы желательно использовать 2D-массив (и если да, то какой? Я бы предпочел избежать повышения на данный момент, но, возможно, я свяжу его позже) и индексации смещения, например, следующим образом:

массив [I] [J] -> Array [I-1] [J + 2]

или, с массивом 1D, если NX является "эквивалент" число столбцов:

массив [i * NX + j] -> Array [(i-1) * NX + j + 2]

Зная, что это будет сделано почти миллион раз за итерацию с почти миллионом итераций.

ответ

1

С современными компиляторами и оптимизациями позволил оба они будет, вероятно, формирующим тот же код

Array[i-1][j+2] // Where Array is 2-dimensional 

и

Array[(i-1)*NX+j+2] // Where Array is 1-dimensional 

предположением NX является измерением второго индекса в 2-мерном массиве (количество столбцов).

+0

Да, хорошо, но это «возможно», что меня раздражает .. Спасибо! –