程式效能優化 區域性性原理

2021-09-09 07:44:55 字數 1054 閱讀 3421

乙個編寫良好的電腦程式常常具有良好的區域性性,它們傾向於引用最近引用過的資料項附近的資料項,或者最近引用過的資料項本身,這種傾向性,被稱為區域性性原理。有良好區域性性的程式比區域性性差的程式執行得更快。

時間區域性性示例

function sum(arry) 

return sum

}

在這個例子中,變數sum在每次迴圈迭代中被引用一次,因此,對於sum來說,具有良好的時間區域性性

空間區域性性示例

具有良好空間區域性性的程式

// 二維陣列 

function sum1(arry, rows, cols)

} return sum

}

空間區域性性差的程式

// 二維陣列 

function sum2(arry, rows, cols)

} return sum

}

看一下上面的兩個空間區域性性示例,像示例中從每行開始按順序訪問陣列每個元素的方式,稱為具有步長為1的引用模式。

如果在陣列中,每隔k個元素進行訪問,就稱為步長為k的引用模式。

一般而言,隨著步長的增加,空間區域性性下降。

這兩個例子有什麼區別?區別在於第乙個示例是按行掃瞄陣列,每掃瞄完一行再去掃下一行;第二個示例是按列來掃瞄陣列,掃完一行中的乙個元素,馬上就去掃下一行中的同一列元素。

陣列在記憶體中是按照行順序來存放的,結果就是逐行掃瞄陣列的示例得到了步長為 1 引用模式,具有良好的空間區域性性;而另乙個示例步長為 rows,空間區域性性極差。

執行環境:

對乙個長度為9000的二維陣列(子陣列長度也為9000)進行10次空間區域性性測試,時間(毫秒)取平均值,結果如下:

所用示例為上述兩個空間區域性性示例

步長為 1

步長為 9000

1242316

從以上測試結果來看,步長為 1 的陣列執行時間比步長為 9000 的陣列快了乙個數量級。

程式效能優化 區域性性原理

概念 乙個編寫良好的電腦程式常常具有良好的區域性性,它們傾向於引用最近引用過的資料項附近的資料項,或者最近引用過的資料項本身,這種傾向性,被稱為區域性性原理。有良好區域性性的程式比區域性性差的程式執行得更快。區域性性通常有兩種不同的形式 時間區域性性 在乙個具有良好時間區域性性的程式中,被引用過一次...

程式區域性性原理感悟

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

區域性性原理

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