![](/img/trans.png)
[英]Java : linear algorithm but non-linear performance drop, where does it come from?
[英]Non-linear performance of Java function in parallel MATLAB
最近,我在我的MATLAB程序中實現了並行化,這與 MATLAB 中的Slow xlsread 中提供的建議非常相似。 然而,實現並行性卻出現了另一個問題——隨着規模的增加,處理時間非線性增加。
罪魁禍首似乎是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
執行並行 IO 操作可能會出現問題(實際上可能會更慢),除非您將所有內容都保存在 SSD 上。 如果您總是在讀取同一個文件並且它不是很大,那么您可能想在循環之前嘗試讀取它並並行進行數據操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.