我广泛使用adjacency_list 。 我一次装载了许多图形,导致内存成为问题。我正在进行静态程序分析,并在boost图中存储反汇编二进制文件的调用图和流程图。因此,我可能会有几万个函数==流程图和一个巨大的调用图。尽管如此,我仍然希望在使用BGL的情况下减少我的图形的内存使用率。
由于我的图形在装载后是静态的,并且边缘和顶点计数事先已知,我看到了巨大的优化潜力。例如,我想为单个图形的所有顶点/边缘分配单个缓冲区,并让图形只存储该缓冲区的索引。
更多问题: 1)使用顶点和边属性的内存开销是多少? 我有相当多的它们。 2)是否可以说服BGL使用shrink_to_fit习语? 据我所知,邻接列表使用push_back添加边缘。 是否可以通过将生成的向量与自身的副本交换来减少内存使用? 也许通过复制整个图形? 3)是否可以在BGL中使用boost池分配器? 据我所知,BGL目前执行许多小型分配-出于空间和运行时效率原因,我真的很想避免这种情况。
是否有人已经构建了针对内存使用进行优化的BGL版本? 我应该尝试使用现有的图形结构并将其与自定义分配器等相结合,还是编写自己的实现并尝试保持与BGL的接口兼容性,以便可以继续使用其算法?
最好的问候。
由于我的图形在装载后是静态的,并且边缘和顶点计数事先已知,我看到了巨大的优化潜力。例如,我想为单个图形的所有顶点/边缘分配单个缓冲区,并让图形只存储该缓冲区的索引。
更多问题: 1)使用顶点和边属性的内存开销是多少? 我有相当多的它们。 2)是否可以说服BGL使用shrink_to_fit习语? 据我所知,邻接列表使用push_back添加边缘。 是否可以通过将生成的向量与自身的副本交换来减少内存使用? 也许通过复制整个图形? 3)是否可以在BGL中使用boost池分配器? 据我所知,BGL目前执行许多小型分配-出于空间和运行时效率原因,我真的很想避免这种情况。
是否有人已经构建了针对内存使用进行优化的BGL版本? 我应该尝试使用现有的图形结构并将其与自定义分配器等相结合,还是编写自己的实现并尝试保持与BGL的接口兼容性,以便可以继续使用其算法?
最好的问候。
Sören