最近,我在MATLAB计划中实施了并行化,这与 Slow xlsread in MATLAB 中提供的建议非常相似。然而,实现并行性已经出现了另一个问题 - 随着规模的增加非线性地增加处理时间。
罪魁祸首似乎是java.util.concurrent.LinkedBlockingQueue
方法,可以从配置文件的附加图像和相应的浓缩图中看出。
问题:如何删除这种非线性,因为我的工作涉及在单次运行中处理超过1000张纸张 - 这会花费很长时间?
注意:程序的并行化部分只需要读取所有.xls
文件并将它们存储在矩阵中,然后我将启动程序的其余部分。 dlmwrite
用于程序的结束,并不需要对其时间进行优化,但也可以建议。
罪魁祸首:
代码并行化:
parfor i = 1:runs
sin = 'Sheet';
sno = num2str(i);
sna = strcat(sin, sno);
data(i, :, :) = xlsread('Processes.xls', sna, '' , 'basic');
end
答案 0 :(得分:0)
执行并行IO操作可能是一个问题(事实上可能会更慢),除非你把所有内容都放在SSD上。如果你总是阅读同一个文件并且它并不是很大,你可能想在循环之前尝试阅读它并且只是并行地进行数据操作。