尽量提高程序的空间局部性和时间局部性
倾向于引用邻近时间内引用过的数据,或者邻近空间引用过的数据。
原理:
使用高速缓存来存储最近被引用的指令和数据----LRU。类似的,操作系统用主存缓存磁盘文件系统中最近被用到的磁盘块。
程序数据引用的局部性:
int sumarrayrows(int a[M][N]){
int i,j,sum=0;
for(i=0;i<M;i++)
for(j=0;j<N;j++)
sum+=a[i][j];
}
这个是比较好的例子,因为二维数组在内存中是这样存储的:
A00 A01 A02 A10 A11 A12
而如果按照列来遍历,就不好了。