Neo4j蓝图与本地遍历速度的比较。

3
我正在对neo4j的遍历速度进行性能测试,比较neo4j的Blueprints和本地实现。我已经创建了一个由1000个节点组成的图,每一层有1个节点,即:

O->O->O->O->. . . .->O

我记录了使用Blueprints代码进行迭代(for循环代码)的时间分别为90ms、93ms和79ms(运行3次)。

Iterable<Vertex> vertices = testGraph.getVertices();

//Code block which was measured.
for(Vertex vertex : vertices){};

使用本地代码时,分别为270ms、268ms和321ms:

Iterable<Node> nodes = Traversal.description().breadthFirst().relationships(CustomRelTypes.LINKED_TO, Direction.OUTGOING).evaluator(Evaluators.all()).traverse(rootNode).nodes();

//Code block which was measured.
for(Node node : nodes){}

我不明白neo4j的blueprints实现为什么更快。我没有为它们中的任何一个进行特殊配置。深度优先搜索的时间几乎相同。有人知道如何加速本地性能以匹配蓝图吗?谢谢。

1
嗯,蓝图实现与核心 Neo4j API 相违背,遍历 API 也是基于此构建的。从这个角度来看,它应该会更快,但并不是很多。你有测试用例吗? - Peter Neubauer
1
这里比较的是相同的东西吗?testGraph.getVertices()与graphDb.getAllNodes()进行比较,而不是使用此遍历(在查找节点时不使用关系),对吗? - cporte
1个回答

5

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接