看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, Gcc, Linux, ...) Linux + GCC 問題(Question): 我寫一個程式,主體是一個迴圈並且從檔案中讀取資料來處理。例如: while(fin.good()){ fin >> time; fin >> voltage; subfunction(time, voltage); } 餵入的資料(Input): 0000 1.5 0002 1.3 0003 0.7 0009 1.1 ... 我有聽說最好把 file I/O 集中,一次讀一批會比較快 不曉得大概是怎麼做? 謝謝~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.73.69.252
x000032001:首先改用scanf就會快很多 再來你可以用getchar()自己處 01/01 16:33
x000032001:理轉換成要的格式 01/01 16:33
x000032001:C++的IO實在是慢 01/01 16:34
loveme00835:為了加速而加速? 還是慢到你受不了才加速? 01/02 01:07
loveme00835:提示一下, 這題的瓶頸在讀入浮點數的地方, 如果存檔的 01/02 01:32
loveme00835:時候有先把它離散化, 讀進記憶體再還原運算會快很多, 01/02 01:33
loveme00835:我是先讀進 std::vector<std::string>, 再用 isstream 01/02 01:34
loveme00835:拿出來數值, 再來做還原, 對 2^22 行每行都是"99999 9 01/02 01:36
loveme00835:9999" 的檔案, 從原本的32秒降到7秒, 佔住檔案的時間 01/02 01:37
loveme00835:也變短了(使用 Code::Blocks 內建的計時) 01/02 01:37
loveme00835:http://codepad.org/DXfSEo1C 01/02 01:51
adxis:推樓上! 01/02 03:48
iamlouis:推l大 01/02 11:33