【发布时间】:2016-09-16 09:55:20
【问题描述】:
使用 Neo4j 的 Java API 版本 3.1.0-M08,我使用 Dijkstra 算法构建了最短路径搜索。我有很多数据,磁盘上有 28 GB。节点代表城市,关系代表连接。通常,一个城市将拥有非常多的连接。在我的PathExpander 中,我排除了大量关系,这导致整个图的一小部分被遍历。然而,搜索的表现非常糟糕:
Relations traversed: 5343
Duration: ~14s
Performance: 373 relations/s
这是热身运行的分析热方法的样子:
PathExpander 和 CostEvaluator 读取类型为 Long、Integer 和 Double 的属性。我尝试用getAllProperties 替换对getProperty 的调用,但没有帮助。
应用程序使用以下 JVM 参数启动:-Xmx10g -Xms10g。我有一个相当快的 SSD,我确保在测量之前通过运行相同的搜索几次来预加载缓存。从第二次运行开始,我看不到磁盘活动,这意味着遍历的图应该在 RAM 中。
我使用默认参数调用GraphDatabaseFactory。自定义配置可以提高性能吗?请注意,我只有 16 GB RAM 用于测试目的。
【问题讨论】:
标签: performance graph neo4j dijkstra