我正在研究一個C++項目,通過一些已知的力場來跟蹤粒子。該代碼以粒子位置和動量的形式生成大量數據。我已經在粒子跟蹤例程中使用了openmp指令。但是,總體性能最終取決於編寫輸出文件所需的時間。我明白,使用線程寫入數據到輸出文件不建議(我已經嘗試過)。我很好奇,是否有任何方法可以使用多個線程將數據寫入多個文件(比如我有4個線程,每個線程同時寫入4個文件)。你能告訴我如何着手嗎?關於如何有效地將數據流傳輸到文件的任何提示? 在此先感謝是否有可能:使用多線程將流輸出到不同的文件/
0
A
回答
0
這裏是併發I/O的話題一篇有趣的文章: http://www.drdobbs.com/parallel/multithreaded-file-io/220300055
有限制這種方法增益的一些基本障礙。第一是硬件能力。 HDD和SSD的讀取和寫入速度有限,試圖同時讀取/寫入多個文件可能無法大幅提高速度。事實上,在試圖同時完成多項任務的硬盤上,實際上可能會在很多情況下損害性能,這可以在我提供的鏈接的基準測試中看到。看起來2-4線程可以在閱讀中獲得明顯的收益,但寫作規格令人失望。多線程技術絕對有助於加速數據的序列化。
相關問題
- 1. 是否可以使用ABCpdf將數據流輸出到PDF?
- 2. 是否有可能從不同的線程調用JS函數?
- 3. Clojure多線程輸出流
- 4. 是否有可能將標準輸出重定向到同一個程序?
- 5. 是否有可能發送FFMPEG輸出到一個PHP文件?
- 6. 使用grunt,是否有可能編譯並輸出一個更改的文件到不同的目錄?
- 7. 我可以使用ffmpeg將jpegs輸出到內存流而不是文件
- 8. 是否有可能有多個STDIN流?
- 9. 是否可以輸出文件? (注意,不是「到」文件)
- 10. 是否有可能爲不同的gradle build/flavor使用多個清單文件?
- 11. 同時在python中運行多個線程 - 是否有可能?
- 12. 是否有可能使用JUnit測試多線程?
- 13. 是否有可能通過文件將循環拆分成多個線程?
- 14. 發送輸入並使用不同的線程獲取輸出到exe文件
- 15. 是否有可能爲不同的文件夾有不同的.gitconfig文件
- 16. 是否可以將C++輸出流綁定到另一個輸出流?
- 17. 是否可以從多個線程寫入同一文件的不同部分?
- 18. 是否有可能輸出到監視流而不是標準輸入,標準輸出和標準錯誤? (python)
- 19. 是否有可能以編程方式將文件推送到無線SD卡?
- 20. 使用子流程將腳本輸出定向到文件?
- 21. 使用多線程控制檯輸出到文件
- 22. 是有可能得到兩種不同的JSON輸出
- 23. 是否有可能將輸出緩存到Log4j Mail Appender?
- 24. 是否有可能使用公理流傳輸屬性值
- 25. 多線程控制檯輸出不同
- 26. Unix:是否可以在顯示所有輸出的同時將錯誤輸出複製到文件?
- 27. 是否有可能有不同的IsolatedStorageSettings.ApplicationSettings?
- 28. 是否有可能使用python將文件複製到Windows啓動文件夾?
- 29. 是否可以使用jQuery將附件複製到不同的輸入中?
- 30. 是否有可能在代碼(C++ I/O文件)中使用輸出文件作爲輸入文件
您有權訪問並行文件系統嗎?如果沒有,那麼就不要試圖平行你的IO ... – Gilles
@Gilles我會停止打擾它然後:D –