我使用以下代码查找两个节点之间的最短路径:
Iterable<Object> spath = orientGraph.getRawGraph().command(new OSQLSynchQuery<Object>(
"select shortestPath("+v1.getId()+","+v2.getId()+",'BOTH')"));
我的问题是我需要太多时间。我的图有36,692个顶点和367,662个边,查询大约需要2分钟。我使用orientdb-1.6.2。我的机器有一个2.3 Ghz CPU(i5),4GB RAM和320GB磁盘,我在Macintosh OSX Mavericks(10.9)上运行。
请注意,我的数据库不使用任何特殊配置。我只需使用以下代码打开它:
orientGraph = new OrientGraph("plocal:"+orientDBDir);
我的堆大小也是2GB。
有没有办法在速度方面提升程序?
编辑:我正在尝试使用以下代码打印结果
System.out.println(spath.iterator().next());
经过一些测试后,我意识到spate.iterator()。next()行是减慢过程速度的行。那是为什么?
答案 0 :(得分:2)
发布1.7-SNAPSHOT解决了这个问题。现在从2分钟开始,相同的查询在0.1秒内返回!