【发布时间】:2021-08-31 06:35:43
【问题描述】:
我正在使用 jGraphT 在 java 中创建一个图形,并使用流从列表中添加顶点和边。
我的问题是:
我可以使用stream().parallel() 更快地添加它们吗?
【问题讨论】:
标签: java parallel-processing java-stream jgrapht
我正在使用 jGraphT 在 java 中创建一个图形,并使用流从列表中添加顶点和边。
我的问题是:
我可以使用stream().parallel() 更快地添加它们吗?
【问题讨论】:
标签: java parallel-processing java-stream jgrapht
没有,至少据我所知没有。本质上,添加顶点或边归结为 2 个步骤:(a) 检查边/顶点是否已经存在,如果不存在,则 (b) 添加边/顶点。根据图的类型,步骤 (b) 涉及将对象添加到存储边/顶点的适当容器中。我不是并发编程方面的专家,但我不明白并行流如何更快地完成上述工作。
我不确切知道您的用例是什么,或者您尝试完成什么。然而,jgrapht-opt 包中有一些优化的特殊图形类型可能会让您受益。图形功能不会改变(即您可以在它们上运行相同的算法);只有图形的存储方式发生了变化。一些存储机制的内存效率更高,允许您使用很少的内存来存储大量图形。其他图,例如稀疏图,可以更快地创建并且访问操作也更快,但是这些图通常是不可变的,即一旦创建它们就无法更改。您需要什么实际上取决于您的用例。
【讨论】: