2013-05-22 60 views
4

使用C++讀取超過30000行和3000列的大文件。 (30000×3000)矩陣。即時通訊使用2d矢量推動讀取數據。但我需要做這個過程幾次。有什麼方法可以優化閱讀過程嗎?在C++中讀取大數據

+0

「處理幾次」意味着讀幾次相同的文件?是在運行時選擇的文件?一種方式可能是平行讀取。 –

+0

我將使用這些數據進行分類,這就是爲什麼我可能需要一次又一次地瀏覽整個數據。該文件現在在運行時選擇。 –

回答

2

我會給你一些想法,但不是確切的解決方案。因爲我不知道你係統的全部細節。

  1. 事實上,如果你有這麼多的大文件數據,只有一些數據在下次閱讀中發生變化。嘗試使用一些數據庫方法。
  2. 對於性能,您可以使用併發文件讀取(通過使用多線程逐個讀取相同的文件)。
  3. 如果您還需要處理數據,請使用單獨的線程進行處理,並且可以通過隊列或並行隊列進行鏈接。
  4. 如果你的數據長度是固定的(如修正長度數字)。如果您知道更改的位置,請嘗試只讀取已更改的數據,而不是一次又一次讀取和處理整個文件。
  5. 如果以上任何情況沒有幫助使用memory mapping methodology。如果您尋求便攜性,Boost Memory-Mapped Files將支持您減少您的作品
2

內存映射機制沒問題,因爲只有讀操作。

+0

[鏈接](http://www.boost.org/doc/libs/1_53_0/doc/html/interprocess/sharedmemorybetweenprocesses.html#interprocess.sharedmemorybetweenprocesses.mapped_file)點擊此處查看詳細信息。 – Mou