我正在使用以下代码来查找两个节点之间的最短路径:
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()这一行会减慢该过程的速度。这是为什么?
1.7-SNAPSHOT版本修复了此问题。现在,从2分钟起,同一查询将在0.1秒内返回!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句