Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #define N 40000000
- #define M 10
- #include <sys/time.h>
- #include <stdlib.h>
- double gettime ()
- {
- struct timeval tv;
- gettimeofday (&tv, NULL);
- return (double)tv.tv_sec + (0.000001 * (double)tv.tv_usec);
- }
- double sum1 (double *a, int n)
- {
- int i;
- double sum = 0;
- for (i=0; i<n; i+=4)
- {
- sum += a[i+0];
- sum += a[i+1];
- sum += a[i+2];
- sum += a[i+3];
- }
- return sum;
- }
- double sum2 (double *a, int n)
- {
- int i;
- double sum1=0, sum2=0, sum3=0, sum4=0;
- for (i=0; i<n; i+=4)
- {
- sum1 += a[i+0];
- sum2 += a[i+1];
- sum3 += a[i+2];
- sum4 += a[i+3];
- }
- return sum1+sum2+sum3+sum4;
- }
- int main ()
- {
- double *array = malloc (N * sizeof (double));
- int i;
- double time;
- double s;
- for (i=0; i<N; i++) array[i] = 2;
- time = gettime();
- s = 0;
- for (i=0; i<M; i++) s += sum2 (array, N);
- time = gettime() - time;
- printf ("%f %f\n", s, time);
- time = gettime();
- s = 0;
- for (i=0; i<M; i++) s += sum1 (array, N);
- time = gettime() - time;
- printf ("%f %f\n", s, time);
- free (array);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement