Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <time.h>
- #include <stdlib.h>
- #include <stdio.h>
- int f1(unsigned size)
- {
- double *x = malloc(size * sizeof(double));
- int *y = malloc(size * sizeof(int));
- double *res = malloc(size * sizeof(double));
- for(unsigned i = 0; i < size; ++i)
- {
- x[i] = y[i] = i;
- res[i] = x[i] + y[i];
- }
- free(x);
- free(y);
- free(res);
- return EXIT_SUCCESS;
- }
- int f2(unsigned size, void *memory)
- {
- double *x = (double*)memory;
- int *y = (int*)(x+size) + size;
- double *res = (double*)(y + size) + size;
- for(unsigned i = 0; i < size; ++i)
- {
- x[i] = y[i] = i;
- res[i] = x[i] + y[i];
- }
- return EXIT_SUCCESS;
- }
- int main()
- {
- double sum1 = 0, sum2 = 0;
- unsigned size = 5000, repeat = 1000;
- void *memory = malloc(2*size*sizeof(double) + size*sizeof(int));
- clock_t beg, end;
- for(unsigned i = 0; i < 1000; ++i)
- {
- beg = clock();
- for(unsigned i = 0; i < repeat; ++i)
- f1(size);
- end = clock();
- sum1 += (double)(end - beg) / CLOCKS_PER_SEC;
- beg = clock();
- for(unsigned i = 0; i < repeat; ++i)
- f2(size, memory);
- end = clock();
- sum2 += (double)(end - beg) / CLOCKS_PER_SEC;
- }
- printf("f1: %f\nf2: %f", sum1, sum2);
- getchar();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement