日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

csapp-局部性

發(fā)布時間:2024/4/17 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 csapp-局部性 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

局部性分為兩中:時間局部性和空間局部性。

在時間局部性中,如果一個內(nèi)存的位置被引用了一次,那么在將來有可能會被多次引用。

在空間局部性中,如果一個內(nèi)存位置被引用了一次,那么在將來有可能這個內(nèi)存附近的內(nèi)存位置會被引用。

局部性的意義:局部性允許引入一個成為高速緩存存儲器的存儲器來保存最近被引用的指令和數(shù)據(jù)項,提高主存的訪問速度。

接下來看個例子;

int sumvec(int v[N]){int i=0,sum=0; for(i=0;i<N;i++)sum+=v[i]; return sum;}

在這段代碼中,我們可以看到,sum每一次循環(huán)都會被引用,因此sum具有良好的時間局部性。sum是一個標量,沒有空間局部性,因為sum永遠只占一個空間。

數(shù)組V在內(nèi)存中的分布為

很明顯,v是一個矢量,在內(nèi)存中連續(xù)分布,因此它具有良好的空間局部性,所以我們可以肯定sumvec具有良好的局部性

sumvec這樣順序訪問一個向量每個元素的函數(shù),具有步長為1的引用模式,我們稱步長為1的引用模式為順序引用模式。

一個連續(xù)向量中,·每隔k個元素進行訪問,成為步長為k的引用模式,很明顯,步長越長,空間局部性就越差。

接下來看一個空間局部性不連續(xù)的例子

int sumarraycols(int a[M][N]){int i,j,sum=0; for(int i=0;i<N;i++) for(int j=0;j<M;j++){sum+=a[j][i];} return sum;}

a為一個二維矩陣,上面這個函數(shù)是按照列的順序來訪問二維數(shù)組的。由二維數(shù)組的內(nèi)存結(jié)構(gòu)可以看出,步長M,所以這個函數(shù)的空間局部性并不好。

看到一篇博客,寫得挺好的,https://www.cnblogs.com/glczero/p/4478274.html。這里把二維數(shù)組的行掃描,列掃描的時間做了比較。

習(xí)題6.7 將 sum+=a[k][i][j]變成 sum+=a[i][j][k]即可 習(xí)題6.9 clear1函數(shù)就是一個一個掃描,步長為1 clear2函數(shù)會在vel和acc數(shù)組中不斷地跳躍 clear3很明顯最差。

?

轉(zhuǎn)載于:https://www.cnblogs.com/illfuckingkyzb/p/10201854.html

總結(jié)

以上是生活随笔為你收集整理的csapp-局部性的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。