我正在对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,时间几乎相同。
是否有人如何加快原生表现以匹配蓝图。
谢谢。答案 0 :(得分:5)
蓝图使用Neo4j的本机getAllNodes()方法,而不是遍历API:
因此,等效的本机Neo4j Java代码将是:
g = new EmbeddedGraphDatabase('/path/to/graph-dir');
g.getAllNodes();