int i; for (i = 0; i<size; i++) { g[i]++; } } int operation(int *a, int stri, int size) { int clockStart, clockEnd; int i, j; clockStart = clock(); for (j = 0; j<stri; j++) { for (i = 0; i < size; i += stri) { a[i + j] = a[i + j] * 2; } } clockEnd = clock(); return(clockEnd - clockStart); } int main() { int * a; int * garbage; const int arraysize = 4 * (1 << 20); int i, j; int r; int clockStart, clockEnd; int stride = 100; int totalTime; printf("array size = %d\n", arraysize); srand(1234567); garbage = (int *)malloc(sizeof(int) * arraysize); for (i = 0; i < arraysize; i++) { garbage[i] = rand(); } a = (int *)malloc(sizeof(int) * arraysize); /* ver. 1: sequential access */ for (i = 1;i <= stride;i++) { for (j = 0;j < arraysize ;j++) { a[j] = rand(); } flush(garbage, arraysize); totalTime = operation(a, i, arraysize); printf("stride is: %d, time used is: %d ms.\n", i, totalTime); } /* end */ free(a);