用matlab写了一个超长代码的方程(960行....),有个很奇怪的现象,当我使用一个循环反复调用这个方程的时候,速度飞快。
比如:
tic
for test =1:1000
t=floor(3*rand);
u=floor(3*rand);
v=floor(3*rand);
alpha=rand;
A=rand(1,3);
rfunccode (t,u,v,alpha,A,Farray) ;
end
toc
比使用老的迭代代码快了 10倍。
但将这个方程应用在计算积分的 代码中调用的话,反倒是慢了不少。 即使是将代码写成C++还是比原来的老代码要慢。
这种现象难道是因为 计算机读取代码需要花不少时间?请问,有啥解决办法吗?
代码大约结构如下: 是一个将迭 代 暴_力_拆_开的代码
if x==0
if y==0
if z==0
R0000=R000 (0,alpha,A,Farray) ;
result =R0000;
elseif z==1
R0001=R000 (1,alpha,A,Farray) ;
result =Az*(R0001);
elseif z==2
R0001=R000 (1,alpha,A,Farray) ;
R0002=R000 (2,alpha,A,Farray) ;
result =(R0001)+Az*(Az*(R0002));
elseif z==3
R0002=R000 (2,alpha,A,Farray) ;
R0003=R000 (3,alpha,A,Farray) ;
result =(2)*(Az*(R0002))+Az*((R0002)+Az*(Az*(R0003)));
|