[問題] 加快儲存檔案的速度 已回收

看板MATLAB作者 (ymca)時間12年前 (2011/08/18 01:04), 編輯推噓0(004)
留言4則, 1人參與, 最新討論串1/1
我們實驗室有一個計算與存檔的GUI 裡面使用for loop將一個一個資料讀取 然後再一個一個寫入檔案 由於我們處理的數據通常都在20*6左右 所以問題不大 不過現在我們需要處理到30000*18這麼大的資料量 就變成花了非常多的時間在存檔.... 我試了很多方法想要加快他的速度 不過都沒成功 這些data會在先有title以後依次寫入 例如 第一步 titleA titleB titleC 1 第二步 titleA titleB titleC 1 2 以此類推 然後寫滿30000*3的矩陣 請問如何改寫可以加快存檔的速度嗎? 感謝 程式碼如下 for row = 1 : max_column_height %這裡會有三萬筆資料的長度 if (row > 1) fwrite(fid, TAB); end for col = 1 : length(handles.output_column_name) if (col == length(handles.output_column_name)) end_char = ENDL; else end_char = TAB; end if (row > length(output_column_data{col})) fwrite(fid, end_char); else temp = output_column_data{col}; val = num2str(temp(row), 8); fwrite(fid, [val end_char]); %問題應該在這三行 一個一個數值寫入花很多時間 不過因為每個數值中間需要用TAB %分隔 所以我不知道該怎麼改寫才可以達到同樣的效果 卻改成一次寫入檔案 %我想這樣應該會快很多 end end end -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 128.227.117.184 ※ 編輯: cerebellum 來自: 128.227.117.184 (08/18 01:57)

08/18 02:13, , 1F
如果你的for col迴圈次數很短,那麼建議把迴圈層次改成
08/18 02:13, 1F

08/18 02:13, , 2F
for col迴圈,再for cow迴圈
08/18 02:13, 2F

08/18 02:17, , 3F
例如:for ii=1:10再for jj=1:1000,會比forjj=1:1000
08/18 02:17, 3F

08/18 02:18, , 4F
再for ii=1:10 還快。
08/18 02:18, 4F
文章代碼(AID): #1EI_Ia-F (MATLAB)