APPFS
Advanced practical programming for scientists
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros
ex4_array.c
Go to the documentation of this file.
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <time.h>
4 
5 #define SIZE 100000000
6 
7 #define GET_SEC(a, b) ((b - a) / (double)CLOCKS_PER_SEC)
8 
9 int main(int argc, char** argv)
10 {
11  clock_t start;
12  double* x = malloc(SIZE * sizeof(*x));
13  double sum;
14 
15  for(int i = 0; i < SIZE; i++)
16  x[i] = i + 1.0;
17 
18  sum = 0.0; start = clock();
19 
20  /* In order 1 */
21  for(int i = 0; i < SIZE; i++)
22  sum += x[i];
23 
24  printf("IO time=%.3f sum=%.1f\n", GET_SEC(start, clock()), sum);
25 
26  sum = 0.0; start = clock();
27 
28  /* In order 2 */
29  for(int k = 0; k < 100; k++)
30  for(int i = 0; i < SIZE / 100; i++)
31  sum += x[k * (SIZE / 100) + i];
32 
33  printf("O1 time=%.3f sum=%.1f\n", GET_SEC(start, clock()), sum);
34 
35  sum = 0.0; start = clock();
36 
37  for(int i = 0; i < SIZE / 100; i++)
38  for(int k = 0; k < 100; k++)
39  sum += x[k * (SIZE / 100) + i];
40 
41  printf("OH time=%.3f sum=%.1f\n", GET_SEC(start, clock()), sum);
42 
43  sum = 0.0; start = clock();
44 
45  for(int i = 0; i < SIZE / 1000; i++)
46  for(int k = 0; k < 1000; k++)
47  sum += x[k * (SIZE / 1000) + i];
48 
49  printf("OT time=%.3f sum=%.1f\n", GET_SEC(start, clock()), sum);
50 
51  sum = 0.0; start = clock();
52 
53  for(int i = 0; i < SIZE / 10000; i++)
54  for(int k = 0; k < 10000; k++)
55  sum += x[k * (SIZE / 10000) + i];
56 
57  printf("Ot time=%.3f sum=%.1f\n", GET_SEC(start, clock()), sum);
58 
59  sum = 0.0; start = clock();
60 
61  for(int i = 0; i < SIZE / 100000; i++)
62  for(int k = 0; k < 100000; k++)
63  sum += x[k * (SIZE / 100000) + i];
64 
65  printf("Oh time=%.3f sum=%.1f\n", GET_SEC(start, clock()), sum);
66 }
#define GET_SEC(a, b)
Definition: ex4_array.c:7
#define malloc(a)
Definition: mshell.h:53
int main(int argc, char **argv)
Definition: ex4_array.c:9
char x
Definition: ex4_struct.c:4
#define SIZE
Definition: ex4_array.c:5
int i
Definition: ex4_struct.c:4