并行MATLAB中Java函数的非线性性能

时间:2011-06-01 05:23:57

标签: performance matlab file-io parallel-processing

最近,我在MATLAB计划中实施了并行化,这与 Slow xlsread in MATLAB 中提供的建议非常相似。然而,实现并行性已经出现了另一个问题 - 随着规模的增加非线性地增加处理时间

罪魁祸首似乎是java.util.concurrent.LinkedBlockingQueue方法,可以从配置文件的附加图像和相应的浓缩图中看出。

问题:如何删除这种非线性,因为我的工作涉及在单次运行中处理超过1000张纸张 - 这会花费很长时间?

注意:程序的并行化部分只需要读取所有.xls文件并将它们存储在矩阵中,然后我将启动程序的其余部分。 dlmwrite用于程序的结束,并不需要对其时间进行优化,但也可以建议。


Profiler details for reading a single Excel sheet from a file having n sheets.

Graph for the times in the above tables.


Processing multiple sheets from file containing multiple sheets.

Processing multiple sheets from file containing multiple sheets.


罪魁祸首:

Enter image description here

代码并行化:

parfor i = 1:runs
    sin = 'Sheet';
    sno = num2str(i);
    sna = strcat(sin, sno);

    data(i, :, :) = xlsread('Processes.xls', sna, '' , 'basic');
end

1 个答案:

答案 0 :(得分:0)

执行并行IO操作可能是一个问题(事实上可能会更慢),除非你把所有内容都放在SSD上。如果你总是阅读同一个文件并且它并不是很大,你可能想在循环之前尝试阅读它并且只是并行地进行数据操作。