#include #define N 150000000 /* 150 Mb */ #define BLK_SIZE 64 char A[N]; unsigned long difftime_ms(struct timeval prev, struct timeval curr) { unsigned long a, b, c; if(prev.tv_sec == curr.tv_sec) return (curr.tv_usec - prev.tv_usec)/1000; a = (1000000 - prev.tv_usec); prev.tv_sec++; b = curr.tv_sec - prev.tv_sec; b = b * 1000000; return (a + b + curr.tv_usec) / 1000; } main() { int i, j, k, r = N/BLK_SIZE, m; struct timeval prev, curr; for(i = 0; i < N; i++) A[i] = 0; gettimeofday(&prev, 0); for(i = 0; i < BLK_SIZE; i++) for(j = 0, k = i; j < r; j++, k+=BLK_SIZE) m = A[k]; gettimeofday(&curr, 0); printf("%u, %u\n", prev.tv_sec, prev.tv_usec); printf("%u, %u\n", curr.tv_sec, curr.tv_usec); printf("milli second diff = %u\n", difftime_ms(prev, curr)); }