2次元配列を90度左回転するのにかかる時間を測定したいです。以下のコードを実行すると、0秒と表示されてしまい、N=2048だと1秒と表示されます。もっと測定の精度を上げるにはどうすればいいですか。教えていただきたいです。
#include <stdio.h> #include <stdlib.h> #include <time.h> void rotate(int N, int **m){ int i, j, start, end; int temp; j=0; end=N; for(start=0;start<N/2;start++){ end--; for(i=start;i<end;i++){ temp=m[j][N-1-i]; m[j][N-1-i]=m[N-1-i][N-1-j]; m[N-1-i][N-1-j]=m[N-1-j][i]; m[N-1-j][i]=m[i][j]; m[i][j]=temp; } j++; } return; } int main(void){ int i, j, N; N=1024; int **m=(int**)malloc(N*sizeof(int*)); m[0]=(int*)malloc(N*N*sizeof(int)); for(i=0;i<N;i++){ m[i]=m[0]+i*N; } for(i=0;i<N;i++){ for(j=0;j<N;j++){ m[i][j]=i+j; //printf("%2d ", m[i][j]); } //printf("\n"); } time_t start_time, end_time; start_time=time(NULL); rotate(N, m); end_time=time(NULL); printf("time:%.8f\n", (double)end_time-start_time); /*for(i=0;i<N;i++){ for(j=0;j<N;j++){ printf("%2d ", m[i][j]); } printf("\n"); }*/ return 0; }
回答2件
あなたの回答
tips
プレビュー