[問題] 如何提升寫多筆檔案速度的方法?

看板C_and_CPP作者 (車文晶)時間14年前 (2011/11/06 22:34), 編輯推噓2(2014)
留言16則, 8人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) BCB 問題(Question): 將一組資料分成十份檔案貯存,不過目前我的方法是 一次create一個檔案,寫入,在關閉檔案 這樣十次(這樣感覺不太好看 = =) ,有沒有什麼方法(或寫法)能提升效能呢?? 謝謝~ 程式碼(Code):(請善用置底文網頁, 記得排版) AnsiString FileName ="xxxxxx"; //十筆資料名都不一樣 int fHandleW = FileCreate(FileName); //create檔案 FileWrite(fHandleW, Data[0], Len[0]); //將資料寫入檔案 FileClose(fHandleW); fHandleW = 0; .........以下十次 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.195.222.61

11/06 22:43, , 1F
那你可以用迴圈把重覆的code包一包, 或者用函數把同樣的
11/06 22:43, 1F

11/06 22:44, , 2F
事情包裝起來用call的. 如果只有檔名不同, 迴圈法就是先
11/06 22:44, 2F

11/06 22:44, , 3F
預建好FileName[]的array, 這樣就可以餵loop index做事;
11/06 22:44, 3F

11/06 22:45, , 4F
函數法就是把檔名傳進去, 然後依不同參數做事, 當然也可
11/06 22:45, 4F

11/06 22:45, , 5F
以合併使用XD
11/06 22:45, 5F

11/06 22:59, , 6F
那效能來說,是不是只能create十個Thread同時執行這個方法??
11/06 22:59, 6F

11/06 23:05, , 7F
你可以試試看,但不見得有效,畢竟你只有一顆硬碟
11/06 23:05, 7F

11/06 23:05, , 8F
跟程式執行時間比起來,硬碟存取速度是很慢的
11/06 23:05, 8F

11/06 23:06, , 9F
而且建議你先找找你的效能瓶頸在哪裡,測量時間,別瞎試
11/06 23:06, 9F

11/06 23:13, , 10F
也是...謝謝回覆~~
11/06 23:13, 10F

11/06 23:23, , 11F
讀寫硬碟最好不要用thread,會造成硬碟的非循序動作 更慢
11/06 23:23, 11F

11/06 23:41, , 12F
premature optimization is the root of all evil
11/06 23:41, 12F

11/06 23:47, , 13F
一定要分10個檔案 存放嗎?
11/06 23:47, 13F

11/06 23:51, , 14F
不知道你的方式能不能開 int fHandleW[10], 在寫入時
11/06 23:51, 14F

11/06 23:52, , 15F
直接指定 fHandleW[i], 會較快點嗎?
11/06 23:52, 15F

11/07 01:17, , 16F
用process解決...
11/07 01:17, 16F
文章代碼(AID): #1Ejfi7rE (C_and_CPP)