[問題] C++寫檔案速度很慢要怎麼樣加速
我在做流體力學的時域有限差分的計算
需要把每一個時間點的資料存起來之後再做分析
但是我的計算副程式跟寫檔案花的時間幾乎是一樣長
我原本想說是因為硬碟讀寫速度太慢了
但是後來我弄了ramdisk把資料寫進去也是一樣慢
所以我懷疑是程式碼有問題,想問說該怎麼做改進
以下是我的程式碼
因為我存的資料是2維矩陣所以要2個迴圈然後讀資料寫到硬碟
void writefile(float* data,string filename)
{
ofstream dataFile(filename.c_str());
for (int i = 0; i < N; i++)
{
for (int j = 0; j < Nx; j++)
{
dataFile << data[j +i*Nx] << "\t";
}
dataFile << '\n';
}
dataFile.close();
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 1.170.79.135
→
08/12 23:30, , 1F
08/12 23:30, 1F
推
08/12 23:37, , 2F
08/12 23:37, 2F
→
08/12 23:37, , 3F
08/12 23:37, 3F
→
08/12 23:39, , 4F
08/12 23:39, 4F
不好意思我不太懂string buf可以再具體一點說明或者給些參考資料嗎?謝謝!
或者有沒有辦法讓計算跟寫檔案是並行處理?
※ 編輯: Lepton 來自: 1.170.79.135 (08/12 23:42)
推
08/12 23:59, , 5F
08/12 23:59, 5F
→
08/13 00:00, , 6F
08/13 00:00, 6F
→
08/13 00:00, , 7F
08/13 00:00, 7F
推
08/13 00:34, , 8F
08/13 00:34, 8F
推
08/13 00:41, , 9F
08/13 00:41, 9F
推
08/13 08:04, , 10F
08/13 08:04, 10F
→
08/13 08:19, , 11F
08/13 08:19, 11F
→
08/13 08:24, , 12F
08/13 08:24, 12F
→
08/13 08:26, , 13F
08/13 08:26, 13F
→
08/13 12:35, , 14F
08/13 12:35, 14F
→
08/13 15:56, , 15F
08/13 15:56, 15F
推
08/13 18:29, , 16F
08/13 18:29, 16F
感謝網友來信sstrean、binary格式的東西我都不太熟我會研究看看的
我現在寫檔案的時機是GPU算這個時間t的資料,把資料傳回CPU做一些處理後把矩陣寫入
我是先在win7上實驗確定演算都沒問題後丟到linux的工作站上運算
※ 編輯: Lepton 來自: 1.170.79.135 (08/13 21:15)
→
08/13 21:56, , 17F
08/13 21:56, 17F
推
08/13 23:17, , 18F
08/13 23:17, 18F
推
08/14 11:34, , 19F
08/14 11:34, 19F
推
08/14 14:38, , 20F
08/14 14:38, 20F
推
08/14 16:54, , 21F
08/14 16:54, 21F
→
08/14 16:55, , 22F
08/14 16:55, 22F
感謝各位熱情的回應,讓我學習到sstream、binary寫檔方式
另外 cuteSquirrel 也提供給用sstream的寫檔案方式比起我原本的效率高多了
程式碼連結: http://ideone.com/X3vCc2
※ 編輯: Lepton 來自: 1.170.79.135 (08/14 17:40)
推
08/14 19:44, , 23F
08/14 19:44, 23F
→
08/14 19:46, , 24F
08/14 19:46, 24F
推
08/14 20:21, , 25F
08/14 20:21, 25F
→
08/14 20:22, , 26F
08/14 20:22, 26F
推
08/14 21:25, , 27F
08/14 21:25, 27F
→
08/14 21:26, , 28F
08/14 21:26, 28F
原來還有這招喔!感謝!又多學了東西
※ 編輯: Lepton 來自: 1.170.79.135 (08/14 23:55)
推
08/17 17:43, , 29F
08/17 17:43, 29F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):