[討論] C語言最快讀檔寫法

看板C_and_CPP作者 (出門遇到鬼)時間10年前 (2014/12/14 08:57), 編輯推噓7(708)
留言15則, 13人參與, 最新討論串1/1
各位大神大家好 小弟最近在研究C語言的讀檔 因為我的檔案不小幾百M到1G都有可能 我使用的方法是getline以後將資料切割push到vector裡面 但是這樣做讀檔速度會非常久 想知道有沒有比較快的實作方式 謝謝大家 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.115.73.221 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1418547450.A.2B7.html

12/14 17:01, , 1F
mmap?
12/14 17:01, 1F

12/14 18:09, , 2F
Vector 先resize看看
12/14 18:09, 2F

12/14 18:18, , 3F
久是多久?
12/14 18:18, 3F

12/14 18:25, , 4F
先reserve吧? 讀檔速度會非常久是跟什麼比?
12/14 18:25, 4F

12/14 21:43, , 5F
改用SSD吧...
12/14 21:43, 5F

12/14 21:43, , 6F
linux? mmap
12/14 21:43, 6F

12/14 21:50, , 7F
C語言?vector?
12/14 21:50, 7F

12/14 22:22, , 8F
把資料都擺進去 RAM disk,只有 1GB 的資料其實不大...
12/14 22:22, 8F

12/14 22:23, , 9F
亦可先把資料全部讀到 memory,用 sstream + getline
12/14 22:23, 9F

12/14 22:26, , 10F
mmap 也可以試試看,多數硬碟循序讀取的性能都不算差
12/14 22:26, 10F

12/15 02:10, , 11F
getline、push、vector... 怎麼看都是 C++
12/15 02:10, 11F

12/15 11:58, , 12F
mmap + 1
12/15 11:58, 12F

12/15 17:19, , 13F
fgets
12/15 17:19, 13F

12/16 13:26, , 14F
mmap, 不要煩惱快取這種事情,交給系統煩惱吧
12/16 13:26, 14F

12/23 02:45, , 15F
buff越小越慢,get line 其實一次讀一字,指定大小最快
12/23 02:45, 15F
文章代碼(AID): #1KZL3wAt (C_and_CPP)