什麼是陣列
將相同型別的值排列儲存,並以元素編號(索引)指定各元素的資料結構。元素在記憶體中連續配置,因此可由元素編號計算位置,以固定的時間讀寫任何元素。有元素編號從0開始的語言,也有從1開始的寫法。
日文名稱: 配列
「陣列」出現在14領域的74道練習題中(程式設計基礎(虛擬碼追蹤), 資料結構與演算法, GPU程式設計等)。
這個名詞所屬的領域: 程式設計基礎(虛擬碼追蹤)
將相同型別的值排列儲存,並以元素編號(索引)指定各元素的資料結構。元素在記憶體中連續配置,因此可由元素編號計算位置,以固定的時間讀寫任何元素。有元素編號從0開始的語言,也有從1開始的寫法。
日文名稱: 配列
「陣列」出現在14領域的74道練習題中(程式設計基礎(虛擬碼追蹤), 資料結構與演算法, GPU程式設計等)。
這個名詞所屬的領域: 程式設計基礎(虛擬碼追蹤)
第1行將i左移2位元以得到4×i,第2行加到陣列的起始位址以求得a[i]的位址,第3行從該位址讀取4個位元組。
a0存放int型(4位元組)陣列a的起始位址,a1存放索引i。下列何者是上述程式碼讀入a2的內容?C語言的二維陣列以列為主(row-major)儲存,a[i][0]、a[i][1]……在記憶體上彼此相鄰。
以上述方式走訪C語言的二維陣列a[i][j]時,若內層迴圈使用j,會比內層使用i更容易變快。其原因為下列何者?可以藉由提高相聯度讓同一組能放入兩條以上,或錯開陣列的起始位置使其對應到不同的組來減少。
在直接映射快取中,兩個陣列的元素對應到快取的同一個位置,每次交替存取時就互相把對方逐出。這種未命中屬於哪一類?在結構的陣列(AoS)中,x、y、z、mass共16位元組為一組排列,因此即使只讀取x,64位元組的快取行中仍有四分之三是用不到的資料。
如上將僅加總x座標的處理,改寫成陣列結構(各成分分別放入不同的陣列)後容易變快,其原因為下列何者?若是陣列,下一個位址可由計算得知,預取與未命中的重疊便能發揮作用。
走訪上述鏈結串列的處理,比讀取相同元素數量的陣列容易大幅變慢,其原因為下列何者?變數 GPU GPU 核心函式(GPU kernel) 快取行 鏈結串列 CUDA 預取 引數 堆疊 指標(pointer)