免費開始練習
高考申論題 114年 [統計] 資料處理

第 一 題

📖 題組:
編譯器(compiler)將二維陣列資料映射到線性記憶體空間,一般採 Row-major 或 Column-major 兩種不同儲存順序。 (一)何謂 Row-major 儲存順序與 Column-major 儲存順序?(8 分) (二)試問程式碼應如何撰寫,對整個巨大型二維陣列之資料讀取,才能獲得較高的讀取時間效率?(6 分)並請給予一程式片段範例做說明。(6 分)
📝 此題為申論題,共 2 小題

小題 (一)

何謂 Row-major 儲存順序與 Column-major 儲存順序?(8 分)

思路引導 VIP

作答時先點出記憶體為單維線性空間的本質,說明為何需要映射規則。接著分別給出 Row-major 與 Column-major 的定義與特徵。為求高分,建議加入簡例(如2x2矩陣)具體呈現資料在記憶體中的排列順序,並舉出代表性的程式語言。

🤖
AI 詳解
AI 專屬家教

【破題】 二維陣列在邏輯結構上呈現具備「列(Row)」與「行(Column)」的表格形式,但電腦實體記憶體為一維的連續線性空間,因此編譯器必須採用特定的映射規則來儲存資料,主要分為「Row-major」與「Column-major」兩種儲存順序。 【論述】

小題 (二)

試問程式碼應如何撰寫,對整個巨大型二維陣列之資料讀取,才能獲得較高的讀取時間效率?(6 分)並請給予一程式片段範例做說明。(6 分)

思路引導 VIP

本題測驗考生對「記憶體階層架構」與「空間區域性(Spatial Locality)」的理解。作答時應先點出 CPU 快取(Cache)的運作機制,再說明程式巢狀迴圈的存取順序必須與編譯器的記憶體映射方式(Row-major 或 Column-major)一致,方能大幅減少快取失誤(Cache Miss),提升效能。

🤖
AI 詳解
AI 專屬家教

【破題】 欲獲得較高的資料讀取時間效率,程式碼的存取順序必須順應陣列在記憶體中的實體配置方式,藉此最大化 CPU 快取的「空間區域性(Spatial Locality)」,以大幅降低快取失誤(Cache Miss)率。 【論述】

📝 陣列儲存順序與效能
💡 記憶體排列方式決定資料存取局部性,進而影響快取效能。
比較維度 Row-major (以列為主) VS Column-major (以行為主)
儲存邏輯 先存第一列,再存第二列 先存第一行,再存第二行
代表語言 C, C++, Java, Python Fortran, MATLAB, R
映射公式 Base + (i * 總行數 + j) Base + (j * 總列數 + i)
高效讀取順序 內層迴圈變動行索引 (j) 內層迴圈變動列索引 (i)
💬程式撰寫時應讓內層迴圈變動最頻繁的索引與記憶體連續存放方向一致。
🧠 記憶技巧:列優先則外列內行、行優先則外行內列;記憶順序同迴圈,快取命中效能顯。
⚠️ 常見陷阱:容易混淆不同程式語言的預設儲存方式。在撰寫優化範例時,若使用 C 語言卻將行索引 (j) 放在外層迴圈,會導致頻繁的快取缺失 (Cache Miss)。
空間局部性 (Spatial Locality) 快取記憶體 (Cache Memory) 分頁缺失 (Page Fault)

🏷️ AI 記憶小卡 VIP

AI 記憶小卡

升級 VIP 解鎖記憶小卡

考前複習神器,一眼掌握重點

🏷️ 相關主題

資料結構與演算法分析
查看更多「[統計] 資料處理」的主題分類考古題

📝 同份考卷的其他題目

查看 114年[統計] 資料處理 全題