簡體   English   中英

Java function 並行 MATLAB 的非線性性能

[英]Non-linear performance of Java function in parallel MATLAB

最近,我在我的MATLAB程序中實現了並行化,這與 MATLAB 中的Slow xlsread 中提供的建議非常相似。 然而,實現並行性卻出現了另一個問題——隨着規模的增加,處理時間非線性增加

罪魁禍首似乎是java.util.concurrent.LinkedBlockingQueue方法,從附加的分析器圖像和相應的壓縮圖中可以看出。

問題:我如何消除這種非線性,因為我的工作涉及單次處理 1000 多張紙——這需要非常長的時間?

注意:程序的並行部分只涉及讀取所有.xls文件並將它們存儲在矩陣中,之后我將啟動程序的其余部分。 dlmwrite在程序結束時使用,實際上並不需要對其時間進行優化,盡管也可以提出建議。


從具有 n 個工作表的文件中讀取單個 Excel 工作表的探查器詳細信息。

上表中的時間圖表。


從包含多張工作表的文件中處理多張工作表。

從包含多張工作表的文件中處理多張工作表。


罪魁禍首:

在此處輸入圖像描述

並行化的代碼:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM