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

作者: lemonsheep (檸檬羊)   2016-11-05 10:39:27
開發平台(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這塊非常沒有概念 想知道有沒有神麼比較快的方式,感謝~
作者: longlongint (華哥爾)   2016-11-05 11:33:00
編譯有加 -O2嗎選 release build然後 stringstream 很慢沒錯C風格的讀檔在某些平台上會更快 字串處理可以自己寫 或用strtok 或 string split 做 但是 我認為改用 release build 在大部分情況應該夠用了
作者: james732 (好人超)   2016-11-05 11:50:00
如果檔案不是非常巨大,我會一口氣全讀進來再操作
作者: EdisonX (卡卡獸)   2016-11-05 12:22:00
作者: Yshuan (倚絃)   2016-11-05 15:44:00
記得fgets是最快 但buffer size必須先估好

Links booklink

Contact Us: admin [ a t ] ucptt.com