刚刚接触AAuto,用矩阵乘积做一下AAuto的运行速度测试。注意系统配置不同,运行结果会有差异。上代码吧。
AAuto代码:
import time.performance function matmul(A,n){ B={} for(i=1;n) for(j=1;n) { v=0; for(k=1;n) v=v+A[i+n*(k-1)]*A[k+n*(j-1)] B[i+n*(j-1)]=v } return B } io.open() n=400 A={} for(i=1;n) for(j=1;n) A[i+n*(j-1)]=1; tk=time.performance.tick() B=matmul(A,n) io.print(n++"阶矩阵阶数自乘耗时 "++time.performance.tick()-tk++" 毫秒") execute("pause") io.close()
运行时间:12569毫秒
#include<iostream> #include<ctime> using namespace std; void matmul(double *A,int n,double *B) { double v(0); for(int i=0;i<n;++i) for(int j=0;j<n;++j) { v=0; for(int k=0;k<n;++k) v+=A[i+n*k]*A[k+n*j]; B[i+n*j]=v; } } int main() { int n=400; double *A=new double[n*n]; double *B=new double[n*n]; for(int i=0;i<n;++i) for(int j=0;j<n;++j) A[i+n*j]=1.0; clock_t tk=clock(); matmul(A,n,B); cout<<n<<"阶矩阵阶数自乘耗时 "<<clock()-tk<<" 毫秒"<<endl; delete[] A; delete[] B; }
(Release编译)运行时间:234毫秒
function B=matmul(A) n=size(A,1); B=zeros(n); for i=1:n for j=1:n v=0; for k=1:n v=v+A(i,k)*A(k,j); end B(i,j)=v; end end
>> A=ones(400);tic,B=matmul(A);toc
Elapsed time is 0.904675 seconds.
注:系统配置 WinXP SP3,intel core2 CPU Quad Q8300 2.50GHz,内存金士顿两条共4GB。