typedef int array[4] [4];
void transpose2 (array dst, array src)
{
int i,j;for(i.0;i< 4;i++) {
for (j = 0;j<4;j++){
dst[j][i] = src[i][j];
}
}
假设这段代码运行在一台具有如下属性的机器上:
- sizeof (int)==4。
- 数组src从地址0开始,而数组dst从地址64开始(十进制)。
- 只有一个L1数据高速缓存,它是直接映射、直写、写分配的,块大小为16字节。
- 这个高速缓存总共有32个数据字节,初始为空。
- 对src和dst数组的访问分别是读和写不命中的唯一来源。
对于每个row和col,指明对src[row] [col ]和dst [row] [col]的访问是命中(h)还是不命中(m)。例如,读src[0][0]会不命中, 而写dst[0] [0]也会不命中。
