[問題] 大檔案讀寫效能改進方法
餓死抬頭
我大學原本寫C,但進公司後,經由前輩建議,學用Perl
同時也用Perl的強項,Regular expression(正規表示式)來改善工作效能
不過最近碰到一個問題,讓我考慮是不是要回歸C的懷抱
就是我工作上需要對於大型文字檔做讀寫,從3G~10G不等
大致是這樣,從文字檔讀進來,對特定字串做搜尋或修改,然後再寫入
目前以一個字串與3G大小的檔案內容做比較並讀寫約需38s
以兩個字串比較就得花上2分鐘,這效能我不太能接受,同仁也希望能改善
因此想上來問,對於大檔案讀寫有何方法改善效能,是不是真的該回歸C?
目前我查過一些資料,可以使用隨機檔或是binary檔的方法
不過小弟我非這方面強項,所以這方法暫時先沒考慮
或是我可以搜尋什麼關鍵字,找資料我可以自己來
我們公司是使用CentOS 7,記憶體約有1.5T
再麻煩各位了,謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 150.116.208.71 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1720849203.A.211.html
推
07/13 14:03,
4月前
, 1F
07/13 14:03, 1F
OK,感謝
推
07/13 17:06,
4月前
, 2F
07/13 17:06, 2F
→
07/13 17:07,
4月前
, 3F
07/13 17:07, 3F
→
07/13 17:08,
4月前
, 4F
07/13 17:08, 4F
推
07/13 17:10,
4月前
, 5F
07/13 17:10, 5F
大概3G大小就要花上約1-2分鐘,用rsync更久.......
推
07/13 20:35,
4月前
, 6F
07/13 20:35, 6F
→
07/13 20:36,
4月前
, 7F
07/13 20:36, 7F
→
07/13 20:37,
4月前
, 8F
07/13 20:37, 8F
這我清楚,不過現階段就是要等蠻久的,所以想說擠牙膏看看有沒有辦法擠出更多效能
我的寫法是這樣
$input = "X123.X\\d+.X456.XX.RR\\d+";
$_ = "X123.X11.X456.XX.RR0 = 0.01";
while(<fid_rd>){
$tmp = $_;
if($tmp =~ /$input/i){
$tmp =~ s/0\.01/1e15/;
}
}
由於0.01與1e15都是唯一的,所以我直接寫死在程式內
推
07/13 22:59,
4月前
, 9F
07/13 22:59, 9F
→
07/13 23:00,
4月前
, 10F
07/13 23:00, 10F
→
07/13 23:00,
4月前
, 11F
07/13 23:00, 11F
→
07/13 23:01,
4月前
, 12F
07/13 23:01, 12F
→
07/13 23:03,
4月前
, 13F
07/13 23:03, 13F
→
07/13 23:03,
4月前
, 14F
07/13 23:03, 14F
→
07/13 23:04,
4月前
, 15F
07/13 23:04, 15F
推
07/14 00:08,
4月前
, 16F
07/14 00:08, 16F
→
07/14 00:08,
4月前
, 17F
07/14 00:08, 17F
→
07/14 00:08,
4月前
, 18F
07/14 00:08, 18F
只更換其中一個特定關鍵字,上面有
推
07/14 12:48,
4月前
, 19F
07/14 12:48, 19F
推
07/14 12:48,
4月前
, 20F
07/14 12:48, 20F
交叉測試過,確定是IO問題沒錯,不過公司硬體設備就是這樣,沒辦法變
所以我只能研究看看是不是能靠coding來補強
推
07/14 16:48,
4月前
, 21F
07/14 16:48, 21F
推
07/15 11:15,
4月前
, 22F
07/15 11:15, 22F
對啊!推坑完就跳槽去更好的公司了XD
推
07/15 11:35,
4月前
, 23F
07/15 11:35, 23F
對的喔!
推
07/15 12:57,
4月前
, 24F
07/15 12:57, 24F
我來試試,謝謝
※ 編輯: jacky1989 (150.116.208.71 臺灣), 07/15/2024 23:56:46
推
07/16 12:34,
4月前
, 25F
07/16 12:34, 25F
→
07/16 14:10,
4月前
, 26F
07/16 14:10, 26F
推
07/16 20:26,
4月前
, 27F
07/16 20:26, 27F
→
07/16 20:26,
4月前
, 28F
07/16 20:26, 28F
→
07/16 20:26,
4月前
, 29F
07/16 20:26, 29F
→
07/16 20:29,
4月前
, 30F
07/16 20:29, 30F
推
08/08 17:03,
3月前
, 31F
08/08 17:03, 31F
→
08/08 17:03,
3月前
, 32F
08/08 17:03, 32F
→
08/08 17:04,
3月前
, 33F
08/08 17:04, 33F
→
08/08 17:04,
3月前
, 34F
08/08 17:04, 34F
→
08/08 17:05,
3月前
, 35F
08/08 17:05, 35F
→
08/08 17:07,
3月前
, 36F
08/08 17:07, 36F
推
10/31 20:11,
3周前
, 37F
10/31 20:11, 37F
→
10/31 20:12,
3周前
, 38F
10/31 20:12, 38F
→
10/31 20:12,
3周前
, 39F
10/31 20:12, 39F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章