Advertisement
Guest User

Untitled

a guest
Apr 9th, 2018
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.33 KB | None | 0 0
  1. #include <time.h>
  2. #include <stdlib.h>
  3. #include <stdio.h>
  4.  
  5. int f1(unsigned size)
  6. {
  7.     double *x = malloc(size * sizeof(double));
  8.     int *y = malloc(size * sizeof(int));
  9.     double *res = malloc(size * sizeof(double));
  10.     for(unsigned i = 0; i < size; ++i)
  11.     {
  12.         x[i] = y[i] = i;
  13.         res[i] = x[i] + y[i];
  14.     }
  15.     free(x);
  16.     free(y);
  17.     free(res);
  18.     return EXIT_SUCCESS;
  19. }
  20.  
  21. int f2(unsigned size, void *memory)
  22. {
  23.     double *x = (double*)memory;
  24.     int *y = (int*)(x+size) + size;
  25.     double *res = (double*)(y + size) + size;
  26.     for(unsigned i = 0; i < size; ++i)
  27.     {
  28.         x[i] = y[i] = i;
  29.         res[i] = x[i] + y[i];
  30.     }
  31.     return EXIT_SUCCESS;
  32. }
  33.  
  34. int main()
  35. {
  36.     double sum1 = 0, sum2 = 0;
  37.     unsigned size = 5000, repeat = 1000;
  38.     void *memory = malloc(2*size*sizeof(double) + size*sizeof(int));
  39.     clock_t beg, end;
  40.     for(unsigned i = 0; i < 1000; ++i)
  41.     {
  42.         beg = clock();
  43.         for(unsigned i = 0; i < repeat; ++i)
  44.             f1(size);
  45.         end = clock();
  46.         sum1 += (double)(end - beg) / CLOCKS_PER_SEC;
  47.         beg = clock();
  48.         for(unsigned i = 0; i < repeat; ++i)
  49.             f2(size, memory);
  50.         end = clock();
  51.         sum2 += (double)(end - beg) / CLOCKS_PER_SEC;
  52.     }
  53.     printf("f1: %f\nf2: %f", sum1, sum2);
  54.     getchar();
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement