[問題] C/C++讀檔速度

看板C_and_CPP (C/C++)作者 (檸檬羊)時間9年前 (2016/11/05 10:39), 編輯推噓4(405)
留言9則, 4人參與, 最新討論串1/1
開發平台(Platform): (Ex: Win10, Linux, ...) Code::block 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) GCC 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 想請問一下一個問題 就是在做檔案操作的時候一次讀入一行會比一次只讀一行的某部分來的快嗎 例如說檔案中的資料是這樣的形式 m666 666 3111....(很多組數字) 這樣直接用getline一次讀一行會比用fin>>m>>666>>666>>3111(分別存在不同變數)快嗎? 我感覺直接全部getline進來似乎是有快上一些 但是讀進來之後在處理資料的時候 我又使用了stringstream 這樣整個處理完的結果好像依然沒有比較快 對讀檔I/O這塊非常沒有概念 想知道有沒有神麼比較快的方式,感謝~ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.113.64.13 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1478313571.A.054.html

11/05 11:33, , 1F
編譯有加 -O2嗎
11/05 11:33, 1F

11/05 11:33, , 2F
選 release build
11/05 11:33, 2F

11/05 11:34, , 3F
然後 stringstream 很慢沒錯
11/05 11:34, 3F

11/05 11:38, , 4F
C風格的讀檔在某些平台上會更快 字串處理可以自己
11/05 11:38, 4F

11/05 11:38, , 5F
寫 或用strtok 或 string split 做 但是 我認為改
11/05 11:38, 5F

11/05 11:38, , 6F
用 release build 在大部分情況應該夠用了
11/05 11:38, 6F

11/05 11:50, , 7F
如果檔案不是非常巨大,我會一口氣全讀進來再操作
11/05 11:50, 7F

11/05 12:22, , 8F
11/05 12:22, 8F

11/05 15:44, , 9F
記得fgets是最快 但buffer size必須先估好
11/05 15:44, 9F
文章代碼(AID): #1O7KPZ1K (C_and_CPP)
文章代碼(AID): #1O7KPZ1K (C_and_CPP)