[問題] 請教C輸出檔案的效能問題
想請教一下
若有一個1GB的檔案,要依每段資料做輸出
ex: 編號100的資料要輸出至100.txt的檔案內
但檔案內沒有依編號順序呈現
可能有多筆的編號100資料放在不同位置
所想到的是每讀一筆資料,先確認是什麼編號
然後
file = fopen("編號.txt","a");
fwrite 資料進 file 內
fclose(file);
但是發現耗費時間比全部輸出為一個檔案慢非常多
請問有什麼方式可以改善嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.210.112.66
推
04/17 14:28, , 1F
04/17 14:28, 1F
→
04/17 14:40, , 2F
04/17 14:40, 2F
→
04/17 14:48, , 3F
04/17 14:48, 3F
→
04/17 14:54, , 4F
04/17 14:54, 4F
→
04/17 14:55, , 5F
04/17 14:55, 5F
推
04/17 14:59, , 6F
04/17 14:59, 6F
→
04/17 15:20, , 7F
04/17 15:20, 7F
Sort部分因為資料是連接沒有分隔的
只有每段資料一開頭會先給定該個長度,然後是編號及其他內容
但每個資料的長度不是固定,所以有點難排序
請問若不關檔案,除了拿掉fclose(file);外
該如何判斷已經開啟過檔案,並寫入檔案呢?
因為這樣似乎會有重覆開啟檔案的問題QQ"
※ 編輯: orange95 來自: 218.210.112.66 (04/17 16:38)
→
04/17 16:43, , 8F
04/17 16:43, 8F
推
04/17 16:49, , 9F
04/17 16:49, 9F
→
04/17 16:50, , 10F
04/17 16:50, 10F
→
04/17 16:51, , 11F
04/17 16:51, 11F
不好意思,想再請問一下
如果我的編號會有跳號(不是單純的從1開始到最後一個數)
並且一開始並不知道會有哪些編號與編號的數量
是在讀每一段資料時才知道有這個編號
那該如果定義 FILE *變數名稱 呢?
因為原先我是使用
FILE *TEST_ITEM;
while (資料內容 != NULL) {
...
抓取編號...
TEST_ITEM = fopen("編號.txt","a");
fwrite(rec->data, len, 1, TEST_ITEM);
fclose(TEST_ITEM);
...
}
變數名稱都使用TEST_ITEM
現在要改成變數,不知道該如何改好><
而我在輸出每段資料前,為免檔案被重覆fopen
需要先判斷是否已有開啟過對嗎?
※ 編輯: orange95 來自: 218.210.112.66 (04/17 18:23)
→
04/18 11:05, , 12F
04/18 11:05, 12F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章