常用概念之程式區域性性原理

2021-08-02 10:15:20 字數 906 閱讀 7830

程式的區域性性原理是指程式在執行時呈現出區域性性規律,即在一段時間內,整個程式的執行僅限於程式中的某一部分。它們傾向於引用的資料項鄰近於其他最近引用過的資料項,或者鄰近於最近自我引用過的資料項。

在現代計算機系統的各個層次,從硬體到作業系統、應用程式等,設計上都利用了區域性性原理。比如快取機制,cpu指令順序處理等。

區域性性通常有兩種形式:時間區域性性和空間區域性性,下面分別進行簡單介紹。

時間區域性性是指如果程式中的某條指令一旦執行,則不久之後該指令可能再次被執行;如果某資料被訪問,則不久之後該資料可能再次被訪問。強調資料的重複訪問。

利用時間區域性性,快取在現代程式系統中扮演著重要角色,資料快取,磁碟快取,檔案快取等,極大提高資料的重複訪問效能。而在程式設計中,迴圈體則是時間區域性性常見的乙個場景:

int sum(std::vector

& vecnums)

return nsum;

}

示例中nsum及nnumslen具有較好的時間區域性性。

空間區域性性是指一旦程式訪問了某個儲存單元,則不久之後。其附近的儲存單元也將被訪問。強調連續空間資料的訪問,一般順序訪問每個元素(步長為1)時具有最好的空間區域性性,步長越大,空間區域性性越差。

/*

* 我們知道,二維陣列在記憶體是線性儲存的,按行排列

* sumarrayrows函式中按行訪問每個資料,記憶體中是順序訪問的,步長為1

* sumarraycols函式中按列訪問資料,步長為m,空間區域性性較差

*/int sumarrayrows(int a[m][n])

}return nsum;

}int sumarraycols(int a[m][n])

}return nsum;

}

程式區域性性原理感悟

區域性性原理 程式的區域性性原理是指程式在執行時呈現出區域性性規律,即在一段時間內,整個程式的執行僅限於程式中的某一部分。相應地,執行所訪問的儲存空間也侷限於某個記憶體區域。區域性性原理又表現為 時間區域性性和空間區域性性。時間區域性性是指如果程式中的某條指令一旦執行,則不久之後該指令可能再次被執行...

區域性性原理

區域性性原理 cpu訪問 儲存器時,無論是訪問指令還是訪問資料,所訪問的 儲存單元 都趨於聚集在乙個較小的連續區域中。三種不同型別的區域性性 時間區域性性 temporal locality 如果乙個資訊項正在被訪問,那麼在近期它很可能還會被再次訪問。程式迴圈 堆疊等是產生時間區域性性的原因。順序區...

區域性性原理

區域性性通常有兩種不同的形式 時間區域性性和空間區域性性。時間區域性性 在乙個具有良好的時間區域性性的程式中,被訪問過一次的儲存器位置很可能在不遠的將來會被再次訪問。空間區域性性 在乙個具有良好空間區域性性的程式中,如果乙個儲存器位置被訪問了一次,那麼程式很可能在不遠的將來訪問附近的乙個儲存器位置。...