2013-12-18 30 views

回答

3

一個通用的答案是:使用來自Boost Interprocess(IPC)的帶有使用IPC分配器的(boost)容器的內存映射文件。 [1]

這將使得透明地處理/虛擬/無限數據大小成爲可能(至少在64位進程中)。

但是尋呼是昂貴的

Boost Geometry可能沒有針對順序訪問模式進行優化,因此您可能需要對使用什麼算法以及以何種順序應用它們進行非常嚴格的處理。否則,縮放這種音量(爲簡單起見,我假設> 16Gb)實際上會由於分頁而變得難以忍受。

在所有通常情況下,縮放到非平凡卷涉及調整算法或甚至爲此目的寫入目標。

沒有手頭的實際任務的任何知識,你可以嘗試

  • 開始的內存映射的數據分配
  • 慢慢開始建立的算法步驟,逐個同時
  • 每一步,在保持密切關注探查器的同時增量數據集

您的探查器將告訴哪一步引入了性能瓶頸,以及體積它變得可辨別。


[1]這給你持久的 「自由」;但是,請記住,您需要在適當的時間負責交易和fsync。另外,連續/順序容器的效果最好。

相關問題