因为要考试了,所以就不再写一遍了,而是直接把我的实验报告的word分段以图片的形式发上来,因为涉及到的程序代码并不长,所以如果有必要,我会把一部分程序贴出来让大家方便复制。文章较长,其中第三部分和第四部分较相像。
1. 获取本机cache信息
2. 观察二维数组 Array[][] 的存放 ,对行优先、列两种访问情况 的 cache命中情况进行说明,并对两种方式遍历数组时间进行比较。
注意:默认栈大小可能不足,尽量在Linux下运行,运行之前用 ulimit -s 102400 改变程序栈大小为100M再运行。ulimit -a可查询到栈此时大小(stack size)。
#include<time.h>
#include<stdio.h>
#include<sys/time.h>
#include<stdlib.h>
#define N 1000
int main(void)
{
struct timeval startTime,endTime;
float Timeuse;
int i,j,k;
int array[1000][1000];
gettimeofday(&startTime,NULL);
for(i=0;i<1000;i++)
for(j=0;j<1000;j++)
array[i][j]=0x1234+i;
gettimeofday(&endTime,NULL);
Timeuse = 1000000*(endTime.tv_sec - startTime.tv_sec)
+ (endTime.tv_usec - startTime.tv_usec);
Timeuse /= 1000000;
printf("Timeuse = %f\n",Timeuse);
}