/* for2.c : test program of "for" statements $ cl.exe /O2 for2.c $ for2.exe */ #include #include #include #include int main(void) { const int n = 2000; double *a = (double *)malloc(n * sizeof(double)); double *b = (double *)malloc(n * sizeof(double)); double *c = (double *)malloc(n * sizeof(double)); double *d = (double *)malloc(n * sizeof(double)); double **e = (double **)malloc(n * sizeof(double *)); for (int i = 0; i < n; i++) { e[i] = (double *)malloc(n * sizeof(double)); } srand(1); for (int i = 0; i < n; i++) { a[i] = rand() / RAND_MAX; b[i] = rand() / RAND_MAX; c[i] = rand() / RAND_MAX; d[i] = rand() / RAND_MAX; } // (1) clock_t t0 = clock(); for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { e[i][j] = sin((a[i] - b[j]) * (c[i] + d[j])); } } // (2) clock_t t1 = clock(); for (int j = 0; j < n; j++) { for (int i = 0; i < n; i++) { e[i][j] = sin((a[i] - b[j]) * (c[i] + d[j])); } } clock_t t2 = clock(); printf("%d %.3f %.3f\n", n, (double)(t1 - t0) / CLOCKS_PER_SEC, (double)(t2 - t1) / CLOCKS_PER_SEC); return 0; }