通过对变量预分配内存可以大大降低计算耗时,下面举例说明。
1.没有预分配变量内存情况
clear
n = 2000;
tic;
for i=1:n
for j=1:n
a(i,j) = 1;
end
end
time = toc;
disp(['未预分配内存下计算时间为',num2str(time),'秒'])
计算时间为:
未预分配内存下计算时间为3.3465秒
2.预分配变量内存情况
clear
n = 2000;
tic;
a = zeros(n,n,'double');
for i=1:n
for j=1:n
a(i,j) = 1;
end
end
time = toc;
disp(['预分配内存下计算时间为',num2str(time),'秒'])
计算时间为:
预分配内存下计算时间为0.058691秒
可以看出时间大大降低。
3.预分配变量内存方式
a = zeros(n,n,'double') 和 a(n,n) = 0 以及 a = zeros(n,n) 是不一样的,第一种方式消耗时间最小。
>> clear
n = 40000;
tic;
a = zeros(n,n,'double');
time = toc;
disp(time)
0.0023
>> clear
n = 40000;
tic;
a(n,n) = 0;
time = toc;
disp(time)
0.0036
>> clear
n = 40000;
tic;
a = zeros(n,n);
time = toc;
disp(time)
0.0076