#include <stdio.h>
#include <sys/time.h>
extern void icache_test(long count, long step);
extern void icache_test2(long count);
int main()
{
printf("[bytes]\t[us]\n");
struct timeval now, tm;
long long t;
long MBs;
long i;
long step = 32;
for (i=0 ; step<=2048 ; i++, step+=32)
{
long value;
gettimeofday(&now, 0);
icache_test(0x800000L, step);
gettimeofday(&tm, 0);
t = (tm.tv_sec*1000000LL+tm.tv_usec) - (now.tv_sec*1000000LL+now.tv_usec);
printf("%6ld\t%lld\n", step*32, t);
}
gettimeofday(&now, 0);
icache_test2(0x800000L / 2048);
gettimeofday(&tm, 0);
t = (tm.tv_sec*1000000LL+tm.tv_usec) - (now.tv_sec*1000000LL+now.tv_usec);
MBs = (8388608LL*32*1000000) / (t * (1024*1024));
printf("\n%6lld us\t%ld MB/s\n", t, MBs);
return 0;
}