小白求解,通过程序判断L1缓存大小

mu11zi22yu33 2017-11-08 12:03:01
#include <stdio.h>
#include<stdlib.h>
#include <time.h>
#define M 256
#define B 64

double CLOCK() {
struct timespec t;
clock_gettime(CLOCK_MONOTONIC, &t);
return (t.tv_sec * 1000)+(t.tv_nsec*1e-6);
}

main(int argc, char **argv)
{
int i,j,k,jj,kk,en;
double start, finish, total, sum;
int a[M][M], b[M][M], c[M][M];
printf("int : %lu\n",sizeof(int));
printf("float : %lu\n",sizeof(float));
//初始化
for (i=0; i<M; i++)
for (j=0; j<M; j++)
a[i][j] = i+j;

for (i=0; i<M; i++)
for (j=0; j<M; j++)
b[i][j] = i+j;

for (i=0; i<M; i++)
for (j=0; j<M; j++)
c[i][j] = 0;

en = B * 4;
//en = M;
start = CLOCK();
int n = 0;
for(n = 0;n <10;n++)
{
for (kk=0; kk<en; kk+=B)
for (jj=0; jj<en; jj+=B)
for (i=0; i< M; i++)
for (j = jj; j< jj + B; j++)
{
sum = c[i][j];
for (k=kk; k< kk + B; k++)
{
sum+= a[i][j] * b[k][j];
}
c[i][j] = sum;
}

}
finish = CLOCK();
total = finish - start;
printf("Time for the loop = %f\n", total);

return 0;
}
源程序就是这个,应该是可以修改M和B的大小,通过运行时间判断L1缓存的大小,却不知道怎么做
...全文
113 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2017-11-08
  • 打赏
  • 举报
回复
CPU中有L1、L2、……缓存。
自信男孩 2017-11-08
  • 打赏
  • 举报
回复
L1是什么?哪有L1缓存?

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧