1

我是增强几何的新手。就我而言,我需要处理大量数据节点,因此它们无法保存在内存中。是否可以将 boost 几何与本地文件系统一起使用?

4

1 回答 1

3

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

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

然而 分页是昂贵的。

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

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

在不了解手头实际任务的情况下,您可以尝试

  • 从内存映射数据分配开始
  • 慢慢开始构建算法步骤,一次一个
  • 每一步,在密切关注分析器的同时逐步增加您的数据集

您的分析器会告诉您哪个步骤引入了性能瓶颈,以及它在多大程度上变得可辨别。


[1] 这给了你“免费”的持久性;但是,请记住,您负责在适当的时间进行事务和 fsync-ing。此外,连续/顺序容器效果最好。

于 2013-12-18T16:48:03.283 回答