2013-12-18 41 views

回答

3

一个通用的答案是:使用来自Boost Interprocess(IPC)的带有使用IPC分配器的(boost)容器的内存映射文件。 [1]

这将使得透明地处理/虚拟/无限数据大小成为可能(至少在64位进程中)。

但是寻呼是昂贵的

Boost Geometry可能没有针对顺序访问模式进行优化,因此您可能需要对使用什么算法以及以何种顺序应用它们进行非常严格的处理。否则,缩放这种音量(为简单起见,我假设> 16Gb)实际上会由于分页而变得难以忍受。

在所有通常情况下,缩放到非平凡卷涉及调整算法或甚至为此目的写入目标。

没有手头的实际任务的任何知识,你可以尝试

  • 开始的内存映射的数据分配
  • 慢慢开始建立的算法步骤,逐个同时
  • 每一步,在保持密切关注探查器的同时增量数据集

您的探查器将告诉哪一步引入了性能瓶颈,以及体积它变得可辨别。


[1]这给你持久的 “自由”;但是,请记住,您需要在适当的时间负责交易和fsync。另外,连续/顺序容器的效果最好。

相关问题