Advertisement
Guest User

Untitled

a guest
Apr 9th, 2018
149
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*)memory + size;
  25.     double *res = (double*)memory + 2*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.     unsigned size = 10, repeat = 10;
  37.     void *memory = malloc(2*size*sizeof(double) + size*sizeof(int));
  38.     clock_t beg, end;
  39.     for(unsigned i = 0; i < 10; ++i)
  40.     {
  41.         beg = clock();
  42.         for(unsigned i = 0; i < repeat; ++i)
  43.             f1(size);
  44.         end = clock();
  45.         printf("%f\t", (double)(end - beg) / CLOCKS_PER_SEC);
  46.         beg = clock();
  47.         for(unsigned i = 0; i < repeat; ++i)
  48.             f2(size, memory);
  49.         end = clock();
  50.         printf("%f\n", (double)(end - beg) / CLOCKS_PER_SEC);
  51.     }
  52. }
  53.  
  54. /**** Error in `main': malloc(): memory corruption (fast): 0x00000000013470e0 ****/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement