boost图库内存消耗大图
我有一个大图(30k 个顶点,250m 条边),并且使用 boost 图库邻接列表(我尝试了 vec 和列表)消耗超过 25GB。由于要获得一台具有 16GB 以上 RAM 的电脑并不容易,您有什么建议可以减少内存使用量?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我有一个大图(30k 个顶点,250m 条边),并且使用 boost 图库邻接列表(我尝试了 vec 和列表)消耗超过 25GB。由于要获得一台具有 16GB 以上 RAM 的电脑并不容易,您有什么建议可以减少内存使用量?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(1)
我在使用我正在研究的图表的验证技术时遇到了同样的问题。
如果您将处理大量数据(顶点和边),您应该使用自己创建的微调数据结构。
如果有很多边,则应该考虑使用邻接矩阵。
边具有权重,因此您可以使用如下内容:
您可以使用优化的
vector >
仅使用一位来表示每条边(如果边没有属性)。尽管当您想要检查边缘或添加边缘时,邻接矩阵很快,但迭代边缘并不好。
我可以说,在 BGL 和我自己的图中使用相同的属性,我的图要小得多。
I've had the same problem with a verification technique using graphs I'm working on.
If you will work with a huge amount of data (vertices and also edges) you should use a fine tuned data structure created by yourself.
If you have a lot of edges, you should consider using an Adjacency Matrix.
The edges have weights, so you could use something like this:
You could use the optimized
vector<vector<bool> >
that uses only one bit to represent each edge, if the edges didn't have a property.Although the adjacency matrix is fast when you want to check for an edge or add one, it's not good to iterate over edges.
I can say that, using the same properties in BGL and in my own graph, my graph is way smaller.