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 是否足够聪明,可以将已访问(从数据库读取)的顶点存储在内存中,因此从第二次执行开始,它从内存而不是数据库中读取?我的数据集足够小,可以放入内存(还剩下很多空间)。

4

1 回答 1

4

你的假设是正确的。Neo4j 在多个级别上使用缓存:

  1. 映射内存缓存
  2. 对象缓存

第一次运行在冷缓存上运行,因此必须从 I/O 子系统读取所有数据。任何后续访问都将受益于缓存。

有关更深入的解释,请参见http://docs.neo4j.org/chunked/stable/configuration-caches.html

于 2013-03-18T17:11:20.443 回答