我正在尝试记录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读取)顶点在内存中,因此从第二次执行它从内存中读取而不是数据库?我的数据集足够小,可以放入内存中(剩下很多空间)。
答案 0 :(得分:4)
你的假设是正确的。 Neo4j在多个级别上使用缓存:
第一次运行在冷缓存上运行,因此必须从I / O子系统读取所有数据。然后,任何后续访问都将受益于缓存。
有关更深入的说明,请参阅http://docs.neo4j.org/chunked/stable/configuration-caches.html。