[問題] 為什麼我parfor比for慢已回收
我在用parfor處理簡單計算:找到矩陣中的正數,把它減掉5
最大的問題是,parfor比for慢幾十倍。有人知道為什麼嘛?
要怎麼發揮parfor的快速特性阿?
result:
parfor loop takes 0.1797sec
for loop takes 0.0066276sec
machine: Win7 64, 4core, 8G ram
%% code u can test
clc, close all
clear all
A=random('Normal',0,1,1,100000);
B=A;
par=tic;
parfor idx=1:numel(A)
if A(idx)>0
B(idx)=A(idx)-2;
end
end
display(['parfor loop takes ',num2str(toc(par)),'sec'])
A=random('Normal',0,1,1,100000);
B=A;
noPar=tic;
for idx=1:numel(A)
if A(idx)>0
B(idx)=A(idx)-5;
% A(idx)
end
end
display(['for loop takes ',num2str(toc(noPar)),'sec'])
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 128.252.65.225
推
06/05 07:51, , 1F
06/05 07:51, 1F
之前沒,不過開了也一樣
我用:
matlabpool close
matlabpool local 2
or
matlabpool open 都是for快超多
推
06/06 00:34, , 2F
06/06 00:34, 2F
我把radom 矩陣size增加到1 by 1e8,parfor反而更慢了....
越大越慢
※ 編輯: VVVVii 來自: 128.252.214.132 (06/08 03:47)