看板 C_and_CPP 關於我們 聯絡資訊
開發平台(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
longlongint: 編譯有加 -O2嗎 11/05 11:33
longlongint: 選 release build 11/05 11:33
longlongint: 然後 stringstream 很慢沒錯 11/05 11:34
longlongint: C風格的讀檔在某些平台上會更快 字串處理可以自己 11/05 11:38
longlongint: 寫 或用strtok 或 string split 做 但是 我認為改 11/05 11:38
longlongint: 用 release build 在大部分情況應該夠用了 11/05 11:38
james732: 如果檔案不是非常巨大,我會一口氣全讀進來再操作 11/05 11:50
EdisonX: #1IxZEXWQ (C_and_CPP) 11/05 12:22
Yshuan: 記得fgets是最快 但buffer size必須先估好 11/05 15:44