Neo4j蓝图与原生遍历速度。 。

时间:2012-07-13 12:12:14

标签: performance testing neo4j

我正在对neo4j的蓝图和本机实现之间的neo4j遍历速度进行性能测试。我创建了一个1000个节点的图表,每个级别有1个节点,即

O-> O-> O-> O-取代。 。 。 .-&≠0

我使用此蓝图代码记录了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的蓝图实现如何更快。我没有为其中任何一个做过任何特殊配置。对于depthFirst,时间几乎相同。

是否有人如何加快原生表现以匹配蓝图。

谢谢。

1 个答案:

答案 0 :(得分:5)

蓝图使用Neo4j的本机getAllNodes()方法,而不是遍历API:

https://github.com/tinkerpop/blueprints/blob/master/blueprints-neo4j-graph/src/main/java/com/tinkerpop/blueprints/impls/neo4j/Neo4jGraph.java#L339

因此,等效的本机Neo4j Java代码将是:

g = new EmbeddedGraphDatabase('/path/to/graph-dir');
g.getAllNodes();