首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用JGraphT版本0.8.2构建图比使用1.3.0版本更快

用JGraphT版本0.8.2构建图比使用1.3.0版本更快
EN

Stack Overflow用户
提问于 2020-02-03 16:04:13
回答 1查看 172关注 0票数 2

我正在构建一个有超过90000条边的图:

代码语言:javascript
复制
DefaultDirectedGraph graph = ...
graph.addVertex(keyFrom);
graph.addVertex(keyTo);
graph.addEdge(keyFrom, keyTo);

对于新版本,我有以下结果:

90469

  • BUILD_GRAPH取14354 ms边数;94309

  • BUILD_GRAPH取6 647 ms边数: 90465

对于旧版本,我的结果如下:

90469

  • BUILD_GRAPH取3949 ms边数: 94309

  • BUILD_GRAPH取4351 ms边数: 90466

分析器告诉我,这个代码在lib中运行得很慢:

代码语言:javascript
复制
UniformIntrusiveEdgesSpecifics:
 return edgeMap.putIfAbsent(e, intrusiveEdge) == null;

我试图改进顶点的hashCode。但这没什么用。我想转到这个库的新版本。但表现是个问题。知道吗,为什么库的新版本要慢一些?

EN

回答 1

Stack Overflow用户

发布于 2020-02-04 16:46:53

后来我发现:

  • ,这个图没有9万条边大,但是它有3个Mio边!只有在大图中,才能观察到performance!
  • If重写图形的containsEdge方法的差异,而性能在旧版本上是新版本的三倍

new DefaultDirectedGraph<GraphNode,StandardFieldConnKeyEdge>(StandardFieldConnKeyEdge.class) {

@重载公共StandardFieldConnKeyEdge addEdge(final GraphNode sourceVertex,final GraphNode targetVertex) {返回super.addEdge(sourceVertex,targetVertex);}@覆盖公共布尔containsEdge(final GraphNode sourceVertex,final GraphNode targetVertex) {返回false;};

我有一个eclipse项目,它显示了这个问题!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60042917

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档