mihaild

Untitled

Oct 5th, 2011
426
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.55 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. int test1(int **m1, int **m2, int **m3, int n) {
  6.     int i, j, k;
  7.     for (i = 0; i < n; ++i) {
  8.         for (k = 0; k < n; ++k) {
  9.             for (j = 0; j < n; ++j) {
  10.                 m3[i][j] += m1[i][k] * m2[k][j];
  11.             }
  12.         }
  13.     }
  14. }
  15.  
  16. int test2(int *m1, int *m2, int *m3, int n) {
  17.     int i, j, k;
  18.     for (i = 0; i < n; ++i) {
  19.         for (k = 0; k < n; ++k) {
  20.             for (j = 0; j < n; ++j) {
  21.                 m3[i*n + j] += m1[i*n + k] * m2[k*n + j];
  22.             }
  23.         }
  24.     }
  25. }
  26.  
  27. int main(int argc, char *argw[]) {
  28.     int size;
  29.     int **m1, **m2, **m3;
  30.     int *a1, *a2, *a3;
  31.     int i, j;
  32.     clock_t time1, time2;
  33.     scanf("%d", &size);
  34.     m1 = (int **) malloc(sizeof(int *) * size);
  35.     m2 = (int **) malloc(sizeof(int *) * size);
  36.     m3 = (int **) malloc(sizeof(int *) * size);
  37.     for (i = 0; i < size; ++i) {
  38.         m1[i] = (int *) malloc(sizeof(int *) * size);
  39.         m2[i] = (int *) malloc(sizeof(int *) * size);
  40.         m3[i] = (int *) malloc(sizeof(int *) * size);
  41.         for (j = 0; j < size; ++j) {
  42.             m1[i][j] = i+j;
  43.             m2[i][j] = i-j;
  44.             m3[i][j] = 0;
  45.         }
  46.     }
  47.  
  48.     a1 = (int *) malloc(sizeof(int) * size * size);
  49.     a2 = (int *) malloc(sizeof(int) * size * size);
  50.     a3 = (int *) malloc(sizeof(int) * size * size);
  51.     for (i = 0; i < size; ++i) {
  52.         for (j = 0; j < size; ++j) {
  53.             a1[i*size + j] = i+j;
  54.             a2[i*size + j] = i-j;
  55.             a3[i*size + j] = 0;
  56.         }
  57.     }
  58.  
  59.     time1 = clock();
  60.     test1(m1, m2, m3, size);
  61.     time1 = clock() - time1;
  62.  
  63.     time2 = clock();
  64.     test2(a1, a2, a3, size);
  65.     time2 = clock() - time1;
  66.     printf("%lf %lf\n", (double) time1/CLOCKS_PER_SEC, (double) time2/CLOCKS_PER_SEC);
  67. }
  68.  
Advertisement
Add Comment
Please, Sign In to add comment