문제

I am using the following code to find the shortest path between two nodes:

Iterable<Object> spath = orientGraph.getRawGraph().command(new OSQLSynchQuery<Object>( 
                "select shortestPath("+v1.getId()+","+v2.getId()+",'BOTH')"));

My problem is that I it needs too much time. My graph has 36,692 vertices and 367,662 edges and the query needs approximately 2 minutes. I use orientdb-1.6.2. My machine has a 2.3 Ghz CPU (i5), 4GB RAM and 320GB disk and I am running on Macintosh OSX Mavericks (10.9).

Note that I don't use any special configuration for my DB. I just open it with the following code:

orientGraph = new OrientGraph("plocal:"+orientDBDir);

Also my heap size is at 2GB.

Is there a way to boost up the procedure in terms of speed?

EDIT: I am trying to print the results with the following code

System.out.println(spath.iterator().next());

After some test I realised that the spate.iterator().next() line is the one that slows down the procedure. Why is that?

도움이 되었습니까?

해결책

Release 1.7-SNAPSHOT fixed this problem. Now from 2 minutes the same query returns in 0.1 seconds!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top