所以我一直在尝试使用我的代码中的函数获取运行时我想知道为什么我的代码没有正确计算它所花费的时间,因为它不应该返回运行时的 0 秒. 我想到的一些可能性是我可能弄乱了二维数组,但如果是这样的话,它不应该返回一个空指针吗?
编辑:原始代码 N=500 应该从我的测试中产生大约 1 秒的运行时间
#include <stdio.h>
#include <sys/time.h>
void matrixMultiplyRow(int N, int matrixA[][N], int matrixB[][N], int final[][N]);
int main(){
int N = 500;
int output[N][N];
int output2[N][N];
int numElements = N*N;
int i, j;
int counter = 1;
//Array 1 fills it with sequential numbers
int experimentA[N][N];
int experimentB[N][N];
for(i=1; i<N+1; i++){
for(j=1; j<N+1; j++){
experimentA[i][j] = counter;
experimentB[i][j] = counter;
counter++;
}
}
struct timeval start_time, stop_time, elapsed_time;
gettimeofday(&start_time,NULL);
matrixMultiplyRow(N, experimentA, experimentB, output);
gettimeofday(&stop_time,NULL);
timersub(&stop_time, &start_time, &elapsed_time);
printf("Total time was %f sec for Row Major.\n", elapsed_time.tv_sec+elapsed_time.tv_usec/1000000.0);
fflush(stdout);
return 1;
}
//Row Major
void matrixMultiplyRow(int N, int matrixA[][N], int matrixB[][N], int final[][N]){
int i, j, k;
for(i=0; i<N; i++){
for(j=0; j<N; j++){
final[i][j] = 0;
for(k=0; k<N; k++){
final[i][j] += matrixA[i][k]*matrixB[k][j];
}
}
}
}