为什么Matlab的parfeval函数比正常值慢



当我正常调用函数时,执行时间比parfeval快得多。

tic
f = parfeval(@magic,1,10000);
value = fetchOutputs(f);
toc
Elapsed time is 2.244390 seconds.

神奇的功能在帕费瓦尔身上只需2.24秒。

tic
magic(10000);
toc
Elapsed time is 0.592743 seconds.

但当我正常打电话时,它工作得很快。这是什么原因以及如何加快发烧功能?

通常,在设置线程时需要考虑一些开销(parfeval就是这样做的(。这是造成时间差异的主要原因。

当使用任何类型的并行处理时,您必须首先确定进程运行的时间是否足够长,以至于生成进程的开销可以忽略不计。在这种情况下,事实并非如此。

测试一个长期运行的案例:

tic
test(1E10)
toc
tic
f = parfeval(@test, 1, 1E10)
value = fetchOutputs(f);
toc
function x = test(n)
x = 1;
for i = 1:n
x = x * 1;
end
end

它给出了(在我的电脑上(5.515.49秒的时间。

相关内容

  • 没有找到相关文章

最新更新