APPFS
Advanced practical programming for scientists
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros
Macros | Functions
ex4_array.c File Reference
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

Go to the source code of this file.

Macros

#define SIZE   100000000
 
#define GET_SEC(a, b)   ((b - a) / (double)CLOCKS_PER_SEC)
 

Functions

int main (int argc, char **argv)
 

Macro Definition Documentation

#define GET_SEC (   a,
 
)    ((b - a) / (double)CLOCKS_PER_SEC)

Definition at line 7 of file ex4_array.c.

#define SIZE   100000000

Definition at line 5 of file ex4_array.c.

Function Documentation

int main ( int  argc,
char **  argv 
)

Definition at line 9 of file ex4_array.c.

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
char x
Definition: ex4_struct.c:4
#define SIZE
Definition: ex4_array.c:5
int i
Definition: ex4_struct.c:4