当我们需要处理较大数据量,或者程序中有一些较为复杂的逻辑。这个时候就需要对程序进行一定的优化,以下是一些小技巧与例子的展示。
硬件方面
1.提升电脑的配置
2.在Matlab软件中设置,分配更多的运行内存
代码方面:
1.数据格式double转成single
A_length = length(A);
numbers = 50;
for k = 1:numbers
for i = 1:A_length
for j = 1:A_length
A(i,j) = A(i,j)*rand;
end
end
end
%矩阵维度:1000*1000
%double:时间已过 1.700172 秒
%single:时间已过 1.546184 秒。
%矩阵维度:5000*5000
%double:时间已过 50.057981 秒。
%single:时间已过 45.139951 秒。
2.避免for循环
%code1:
y =[];
number = 100000;
for i =1:number
y = [y sin(i)];
end
% 时间已过 2.749184 秒。
%code2:
y =[];
number = 100000;
y = sin([1:1:number]);
% 时间已过 0.001548 秒。
3.预先声明变量长度
number = 1000; %5000
%%新建一个矩阵
%这一句就是原先声明变量的长度
A = zeros([number number]);
for i =1:number
for j =1:number
if rand >0.5
A(i,j) = 1;
end
end
end
%1000*1000
%未声明:时间已过 0.237895 秒。
%已声明:时间已过 0.041581 秒。
%5000*5000
%未声明:时间已过 41.466290 秒。
%已声明:时间已过 0.962321 秒。
经过测试,可以看到预先分配数组的大小和避免使用for循环对运行速度的提升效果是最好的,特别是当数据量越大的时候,效果也就越好。
希望对大家有所帮助。
本文章首发于:
欢迎大家访问。