我是增强几何的新手。就我而言,我需要处理大量数据节点,因此它们无法保存在内存中。是否可以将 boost 几何与本地文件系统一起使用?
问问题
49 次
1 回答
3
一个通用的答案是:使用来自 Boost Interprocess (IPC) 的内存映射文件和使用 IPC 分配器的 (boost) 容器。[1]
这将使透明地处理 /virtually/ 无限数据大小成为可能(至少在 64 位进程中)。
然而 分页是昂贵的。
Boost Geometry 可能没有针对顺序访问模式进行优化,因此您可能需要非常严格地使用哪些算法以及以什么顺序应用它们。否则,缩放这种卷(为了简单起见,我假设 >16Gb)实际上会由于分页而变得难以忍受。
在所有通常情况下,扩展到非平凡的卷涉及调整算法,甚至为此目的编写目标算法。
在不了解手头实际任务的情况下,您可以尝试
- 从内存映射数据分配开始
- 慢慢开始构建算法步骤,一次一个
- 每一步,在密切关注分析器的同时逐步增加您的数据集
您的分析器会告诉您哪个步骤引入了性能瓶颈,以及它在多大程度上变得可辨别。
[1] 这给了你“免费”的持久性;但是,请记住,您负责在适当的时间进行事务和 fsync-ing。此外,连续/顺序容器效果最好。
于 2013-12-18T16:48:03.283 回答