Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance Neo4j蓝图与本机遍历速度。_Performance_Testing_Neo4j - Fatal编程技术网

Performance Neo4j蓝图与本机遍历速度。

Performance Neo4j蓝图与本机遍历速度。,performance,testing,neo4j,Performance,Testing,Neo4j,我正在对neo4j的蓝图和本机实现之间的neo4j遍历速度进行性能测试。我创建了一个1000个节点的图,每个级别1个节点,即 O->O->O->O->O->O 我已经使用以下蓝图代码记录了90毫秒、93毫秒和79毫秒(运行了3次)的迭代(循环代码): Iterable<Vertex> vertices = testGraph.getVertices(); //Code block which was measured. for(Vertex vertex : vertices){}

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

O->O->O->O->O->O

我已经使用以下蓝图代码记录了90毫秒、93毫秒和79毫秒(运行了3次)的迭代(循环代码):

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

//Code block which was measured.
for(Vertex vertex : vertices){};
Iterable vertices=testGraph.getVertices();
//测量的代码块。
对于(顶点:顶点){};
并使用本机代码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){}
Iterable nodes=Traversal.description().breadthFirst().relationships(CustomRelTypes.LINKED_TO,Direction.OUTGOING).evaluator(Evaluators.all()).traverse(rootNode).nodes();
//测量的代码块。
对于(节点:节点){}
我无法理解neo4j的蓝图是如何更快地实现的。我没有为它们中的任何一个做任何特殊的配置。时间对于深度优先也是一样的

有人知道我如何加快本地性能以匹配蓝图吗


谢谢。

蓝图在幕后使用了Neo4j的原生getAllNodes()方法,而不是遍历API:

因此,等效的本地Neo4j Java代码应该是:

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

Blueprints实现与核心Neo4j API背道而驰,traversal API也是基于此构建的。从这个角度来看,它应该更快,但不会太多。在什么地方找到了那个测试用例?这里比较的是相同的东西吗?testGraph.getVertices()与graphDb.getAllNodes()相当,而不是这种遍历(在查找节点时使用关系),不是吗?