0

Neo4J アルゴリズムの実行を記録しようとしています。アルゴリズムを 10 回実行しましたが、最初の実行は常に残りの実行よりもかなり長くなります。例えば:

elapsed time = | 86345.0 | 3417.0 | 3416.0 | 4228.0 | 3369.0 | 3323.0 | 3338.0 | 3370.0 | 3775.0 | 3370.0 //ms

なぜこうなった?Neo4J は、既にアクセスした (DB から読み取った) 頂点をメモリに保存するのに十分スマートなので、2 回目の実行からデータベースではなくメモリから読み取りますか? 私のデータセットはメモリに収まるほど小さい (そして多くのスペースが残っている)。

4

1 に答える 1

4

あなたの仮定は正しいです。Neo4jは、複数のレベルでキャッシュを使用します。

  1. マップされたメモリキャッシュ
  2. オブジェクトキャッシュ

最初の実行はコールドキャッシュで動作するため、すべてのデータをI/Oサブシステムから読み取る必要があります。その後のアクセスは、キャッシュの恩恵を受けます。

より詳細な説明については、http://docs.neo4j.org/chunked/stable/configuration-caches.htmlを参照してください

于 2013-03-18T17:11:20.443 に答える