【发布时间】:2010-11-24 15:55:22
【问题描述】:
我正在使用 adjacency_list 广泛地。我一次加载了这么多图表 成为一个问题。我正在做静态程序分析并存储 升压图中反汇编二进制文件的调用图和流程图。 因此我可以有几万个函数==流程图和一个 巨大的呼号。我真的很想减少我的内存使用量 仍然使用 BGL 的图表。
因为我的图在加载和边和顶点计数后是静态的 是事先知道的,我看到了巨大的优化潜力。为了 例如,我想为所有顶点/边分配一个缓冲区 单个图,让图只将索引存储到该缓冲区中。
更多问题:
1)使用顶点和边属性的内存开销是多少?一世
有不少。
2) 是否有可能说服 BGL 使用收缩来适应
成语?据我了解,邻接列表使用 push_back 添加
边缘。是否可以通过交换来减少内存使用
结果向量带有自身的副本?也许通过复制整个
图?
3) 是否可以在 BGL 中使用提升池分配器?目前
我可以告诉 BGL 目前执行了很多小分配 -
出于空间和运行时效率的原因,我真的很想避免这种情况。
是否有人已经构建了针对内存使用优化的 BGL 版本? 我应该尝试使用现有的图形结构并用 自定义分配器或类似的分配器,或者自己编写分配器是否更有成效 实现并尝试保持与 BGL 的接口兼容,所以 我可以继续使用它的算法吗?
最好的问候,
Sören
【问题讨论】:
-
这可能不是您喜欢的答案,但是当涉及到字节计数以准备一些仅用于极少数任务的 boost 库中的一些黑客攻击时——您会得到更好的答案早在 Boost 用户邮件列表 lists.boost.org/mailman/listinfo.cgi/boost-users> 中。其他可能性是阅读源代码...
标签: c++ memory boost graph boost-graph