我正在阅读一本关于 Matlab 的书(Jung Suh 和 Youngming Kim 所著的“使用 GPU 计算加速 Matlab - A Primer with Examples”,2013 年。第 1.7 章示例)。
我读了一个例子,它说:
通过使用元素计算、矩阵计算和函数调用来代替 for 循环,可以显着加快速度。
在我阅读的案例中,它将计算时间从 50 秒减少到 0.5 秒。
我的问题:
哪种语法更“节省资源”和“更快”:
function call
,for
,while
,if
,switch
, 和(即在矩阵或集合中搜索元素)等?逐元素计算、加法和矩阵计算等有多快?
为了便于理解,下面给出了一个简短的示例:
%%% First case
tic;
B = 0;
A = 1:1e8;
for i=1:1000
B = B + A(i);
end
toc;
%%% Second case
tic;
B = 0;
A = 1:1e8;
B = sum(A);
toc;
%%% Third case
C = ones(1e8,1);
tic;
B = 0;
A = 1:1e8;
B = A*C;
toc;
具有以下时序结果
经过的时间是0.463159秒。
经过的时间是0.501524秒。
经过的时间是0.532470秒。
在上面的示例中,所有三种方法都有不同但相当的速度。