#include <sys/time.h>

#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));
    
        
}

