| 7 | #define n 1024 |
| 8 | int x[n][n],y[n][n],z[n][n]; |
| 9 | void matrixmulti(int N, int x[n][n], int y[n][n], int z[n][n]){ |
| 10 | for (i = 0; i < N; i++) { |
| 11 | for (j = 0; j < N; j++) { |
| 12 | r=0; |
| 13 | for (k = 0; k < N; k++) { |
| 14 | r = r + y[i][k] * z[k][j]; |
| 15 | } |
| 16 | x[i][j] = r; |
| 17 | } |
| 18 | } |
| 19 | int main(){ |
| 20 | for (i = 0; i < n; i++) |
| 21 | { |
| 22 | for (j = 0; j < n; j++) |
| 23 | { |
| 24 | y[i][j] = rand() % 10; |
| 25 | z[i][j] = rand() % 10; |
| 26 | x[i][j] = 0; |
| 27 | } |
| 28 | } |
| 29 | struct timeval starttime,endtime; |
| 30 | gettimeofday(&starttime,0); |
| 31 | matrixmulti(n, x, y, z); |
| 32 | gettimeofday(&endtime,0); |
| 33 | doubletimeuse=(endtime.tv_sec-starttime.tv_sec)+(endtime.tv_usec-starttime.tv_usec)/1000000.0; |
| 34 | printf("run time = %f s\n", timeuse); |
| 35 | return 0; |
| 36 | } |