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

h.i*_*h.i 3 testing performance 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){};
Run Code Online (Sandbox Code Playgroud)

并使用本机代码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){}
Run Code Online (Sandbox Code Playgroud)

我不明白neo4j的蓝图实现是如何更快的.我没有为其中任何一个做过任何特殊配置.deepFirst的时间几乎相同.

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

谢谢.

esp*_*eed 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();
Run Code Online (Sandbox Code Playgroud)