我正在尝试使用parfor来加速某些算法,但这只会减慢它们的速度。我在互联网上发现了一些关于这个问题的资源,但我找不到问题的答案。
我有以下代码:
n = 2^14;
v = randn(n, 1);
tic;
for i = 1:n
v(i) = v(i) + 1;
toc
经过的时间是0.000200秒。
matlabpool
tic;
parfor i = 1:n
v(i) = v(i) + 1;
end
toc
matlabpool close
经过的时间是0.069568秒。
为什么会这样?如何使用parfor来加速这个简单的MATLAB示例?
谢谢。
答案 0 :(得分:3)
您的测试示例太小/太简单,因此相对于执行计算所需的时间,为matlabpool创建其他进程的开销很大。尝试一个至少持续几十秒的计算。