以矩阵乘积为例看AAuto的运行速度

刚刚接触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毫秒


MATLAB代码:

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。

你可能感兴趣的:(function,测试,matlab,import)