私はhereの例をいくつかのマイナーな変更の後で試しました。主に、一致のないwhere節を実験的な目的で追加しました。 ( - Javaの6u43 - Ubuntuの12.04 - 1.9.M04 AMDのPhenom II-X6 1090T)私のシステムでNeo4j cypher query slow performance
データベースでちょうど1ノード(また、埋め込まれた)で単純なクエリ
は262ミリ秒を要しました。明らかに何かが間違っている。何が問題なの?
おかげ
public void test()
{
GraphDatabaseService db = g = new GraphDatabaseFactory().newEmbeddedDatabase("./neo4j1test");
long id;
Transaction tx = db.beginTx();
try
{
Node refNode = db.createNode();
id = refNode.getId();
refNode.setProperty("name", "reference node");
tx.success();
}
finally
{
tx.finish();
}
ExecutionEngine engine = new ExecutionEngine(db);
ExecutionResult result = engine.execute("start n=node("+id+") where (n.name = \"reference node\") return n.name");
long time = System.currentTimeMillis();
result = engine.execute("start n=node("+id+") where (n.name = \"reference node\") return n.name");
time = (System.currentTimeMillis() - time);
System.out.println("Time taken : " + time + " ms.");
}
はたぶんそれは、あなたが私は実行時間が大幅に低くすべきだと思います、その場合には、クエリ回以上繰り返してみてくださいだけのNeo4jのブートストラップのオーバーヘッドです:Get the full neo4j power by using the Core Java API
そして、この:
この記事を参照してください。 。 – remigio
最初にキャッシュをウォームアップしようとします。 'start n = node(*)return count(n); start r = rel(*)return count(r)'このコマンドを何度か実行します。秒、どのように時間を測定するのですか?それはサイファー出力によって与えられた時間か、単に特定のコード行の前後の時間ですか? 2番目のケースでは、待ち時間はあなたのアプリとサーバーの間にある可能性があります – ulkas
これはどのように動作するのですか?すでに2番目のクエリの実行時間のみを測定しています(最初の実行が内部キャッシュを初期化するなど)。しかしここでそれは異なっている。 3回目以降の実行では時間が大幅に短縮されます。同じクエリに対して3回目の実行について特別なものは得られません。私は埋め込みモードで使用しています – Shilu