1 #include <stdio.h>
2 #include <sys/time.h>
3 
4 extern void icache_test(long count, long step);
5 extern void icache_test2(long count);
6 
main()7 int main()
8 {
9     printf("[bytes]\t[us]\n");
10 
11     struct timeval now, tm;
12     long long t;
13     long MBs;
14     long i;
15     long step = 32;
16     for (i=0 ; step<=2048 ; i++, step+=32)
17     {
18         long value;
19         gettimeofday(&now, 0);
20         icache_test(0x800000L, step);
21         gettimeofday(&tm, 0);
22         t = (tm.tv_sec*1000000LL+tm.tv_usec) - (now.tv_sec*1000000LL+now.tv_usec);
23         printf("%6ld\t%lld\n", step*32, t);
24     }
25 
26     gettimeofday(&now, 0);
27     icache_test2(0x800000L / 2048);
28     gettimeofday(&tm, 0);
29     t = (tm.tv_sec*1000000LL+tm.tv_usec) - (now.tv_sec*1000000LL+now.tv_usec);
30     MBs = (8388608LL*32*1000000) / (t * (1024*1024));
31     printf("\n%6lld us\t%ld MB/s\n", t, MBs);
32 
33     return 0;
34 }
35