MATLAB: Parfor loop so efficient

parallel computingparfor

Hi I tested two script in the following
%1. Parall_try
parfor i = 1:2000
for j = 1:10000
b(i,j) = i*j+i/j;
end
end
and
%2. Serial_try
for i = 1:2000
for j = 1:10000
a(i,j) = i*j+i/j;
end
end
I set two workers totally. The profile report shows 32s for running serial_try, and about 2s for parallel_try. I noticed the parallel running does not output any i/j index to workspace, which may explain the speed up of parallel running. Is this really true? It motivates me to find a more efficient way to run my script. In script, it output every variable to workspace, which can be very time-consuming. Can I calculate them without output them to workspace? It may sounds absurd because I have not figured out why parfor loop can be that efficient.

Best Answer

parfor effectively pre-allocates the arrays before use whereas your non-parfor solution does not. That makes a big difference in efficiency.