题6

题目

Q:局部性通常有两种不同的形式: 时间局部性和空间局部性。程序员是否编写出高速缓存友好的代码, 就取决于这两方面的问题。对于下面这个函数, 说法正确的是 ( )。

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

A. 对于变量 和 sum,循环体具有良好的空间局部性
B. 对于变量 ,循环体具有良好的空间局部性
C. 对于变量 和 sum,循环体具有良好的时间局部性
D. 对于变量 ,循环体具有良好的时间局部性

分析

A:时间局部性是指一个内存位置被重复引用,循环体中的变量 和 sum 具有良好的时间局部性。
空间局部性是指若一个内存位置被引用, 则它附近的位置很快也会被引用, 因为指令通常是顺序存放、顺序执行的, 数据一般也是以向量、数组等形式存储的, 具有良好的空间局部性。

C