写程序测试本机Cache的大小

 今天写了一个程序简单的测试一下自己机器cache的大小 ,程序 如下 :
#include <time.h>
  2 #include <stdio.h>
  3 #include <memory.h>
  4 #include <stdlib.h>
  5 #include <assert.h>
  6 
  7 #define MINBYTES (1 << 10)
  8 #define MAXBYTES (1 << 28)
  9 #define MAXSTRIDE 16
 10 #define MAXELEMS MAXBYTES/sizeof(int)
 11 
 12 int data[MAXELEMS] = {0,0};
 13 
 14 double run(int size, int stride);
 15 void test(int elems, int stride);
 16 
 17 int main(int argc, char * argv[])
 18 {
 19     int size;
 20     int stride;
 21     memset(data,23,MAXELEMS);
 22     for(size = MINBYTES; size <= MAXBYTES; size += size)
 23     {
 24         printf("%.1f\t\n",run(size,1));
 25     }
 26     return 1;
 27 }
 28 
 29 double run(int size, int stride)
 30 {
 31     clock_t start, end, diff;
 32 
 33     int elems = size / sizeof(int);
 34     start = clock();
 35     test(elems, stride);
 36     end = clock();
 37     diff = end - start;
 38     return (size/stride) / ((double)(end - start));
 39 }
 40 
 41 void test(int elems, int stride)
 42 {
 43     int i, result = 0;
 44     volatile int sink;
 45     for(i = 0; i < elems; i += stride)
 46             result += data[i];
 47     sink = result;
 48 }


以上是所有程序 ,程序 输出 是 
inf
inf
inf
inf
inf
inf
inf
inf
inf
inf
inf
419.4
838.9
559.2
671.1
671.1
516.2
497.1
467.6
由以上结果可得,cache大小为2^11=2M

通过 /proc/cpuinfo
看到的cache大小确实也是2M.
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值