我有一個方案矩陣乘法。另外,我認爲該程序的性能按公式(操作次數)/(運行時間)計算。爲什麼矩陣的增長維度會降低性能?謝謝。矩陣的乘法。性能
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <sys/time.h>
using namespace std;
double getsec(){
struct timeval t;
gettimeofday(&t,NULL);
return t.tv_sec+t.tv_usec*0.000001;
}
int main(int argc, char* argv[])
{
double begintime=getsec();
int n;
if(argc==2)n=atoi(argv[1]);
else n=3;
int**a=new int*[n];
double**b=new double*[n];
double**c=new double*[n];
for (int i=0;i<n;i++){
a[i]=new int [n];
b[i]=new double [n];
c[i]=new double [n];
}
for (int i=0;i<n;i++)
for(int j=0;j<n;j++){
a[i][j]=i+1;
b[i][j]=1/(j+1.);
c[i][j]=0;
}
for (int i=0;i<n;i++)
for(int j=0;j<n;j++)
for(int k=0;k<n;k++)
c[i][j]+=a[i][k]*b[k][j];
double qty_of_operations = (double)2*n*n*n;
cout<<n<<" c11="<<c[0][0]<<" c1n="<<c[0][n-1]<<" cn1="<<c[n-1][0]<<" cnn="<<c[n-1][n-1]<<" "<<qty_of_operations/(getsec()-begintime)<<endl;
return 0;
}
我不明白你的問題。你問爲什麼隨着矩陣大小的增加運行時間增加了? – 2012-03-20 12:27:53
不,我的意思是,爲什麼表現下降。 (in flops) – 2012-03-20 12:30:22
爲什麼標記爲C++?目前有C代碼和一個「cout」。按照111111的建議查看Boost.uBLAS。 – 2012-03-20 12:33:26