《深入理解计算机系统》
6.2 局部性
局部性分为:1. 时间局部性 2. 空间局部性
int sumvec(int v[N])
{
int i, sum = 0;
// sum在每次循环迭代中被引用一次,因此对于sum来说,有好的时间局部性;另一方面因为sum是标量,对于sum来说,没有空间局部性
for (i = 0; i < N; i++)
{
sum += v[i];
// 向量v的元素是被顺序读取的,因此对于变量v,函数有很好的空间局部性;但是时间局部性很差,因为每个向量元素只被访问一次
}
return sum;
}
// 所以可以说:以被重复访问的次数衡量时间局部性,以访问是否有序、步长大小衡量空间局部性