0

相關問題: This one行/列VS線性索引速度(空間局部性)

我使用的空間網格,其可以潛在地獲得大(10^6個節點)或更大。我將經常執行位移操作(如從一個節點到另一個節點的粒子)。我不是一個信息學的破解者,但我開始理解高速緩存行和空間局部性的概念,儘管還不完善。所以,如果我喜歡使用二維數組(如果是的話,哪一個呢?我寧願避免現在提升,但也許我會在稍後將它鏈接起來),並且將位移索引爲例如:

陣列[i] [j] - >數組[I-1] [j + 2]

,或者用一維數組,如果NX是 「等效」 的列數:

陣列[i * NX + j] - > Array [(i-1)* NX + j + 2]

知道它每次迭代將完成近一百萬次,並且還有近100萬次迭代。

回答

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

是的,好的,但這是「可能」,讓我很煩惱。謝謝! –