Reputation: 3
I have DurationTime to count time for DIjkstra Algorithm for different graphs with different numVertices. When I call the DurationTime for the 1st time the duration is:1.5+ sec and for the next calls the duration is around 0.1-0.3 sec.
public static double DurationTime(Graph graph){
double start,end,duration;
if(graph.isArray()){
start=System.nanoTime();
graph.DijkstraArray(0,false);
end=System.nanoTime();
}else {
start=System.nanoTime();
graph.DijkstraList(0,false);
end=System.nanoTime();
}
duration=(end-start)/1000000.000;
return duration;
}
If the I call DurationTime() 1st time with graph with NumVertices N=10 the duration is 1.5+ but if I call it second for instance the duration will be around 0.1-0.3 and the graph with N=20 for instance will have 1.5+ sec.
System.out.println("\n--------------------------------------------------------------------------------------");
System.out.println("N=10");
System.out.println("Dijkstra(adjacency list) duration: "+DurationTime(graph10));
System.out.println("Dijkstra(adjacency array) duration: "+DurationTime(graph10Arr));
System.out.println("\n--------------------------------------------------------------------------------------");
System.out.println("N=20");
System.out.println("Dijkstra(adjacency list) duration: "+DurationTime(graph20));
System.out.println("Dijkstra(adjacency array) duration: "+DurationTime(graph20Arr));
System.out.println("\n--------------------------------------------------------------------------------------");
System.out.println("N=30");
System.out.println("Dijkstra(adjacency list) duration: "+DurationTime(graph30));
System.out.println("Dijkstra(adjacency array) duration: "+DurationTime(graph30Arr));
System.out.println("\n--------------------------------------------------------------------------------------");
System.out.println("N=40");System.out.println("Dijkstra(adjacency list) duration: "+DurationTime(graph40));
System.out.println("Dijkstra(adjacency array) duration: "+DurationTime(graph40Arr));
System.out.println("\n--------------------------------------------------------------------------------------");
System.out.println("N=50");
System.out.println("Dijkstra(adjacency list) duration: "+DurationTime(graph50));
System.out.println("Dijkstra(adjacency array) duration: "+DurationTime(graph50Arr));
Some Results: normal Order:
N=10: Dijkstra(adjacency list) duration: 1.9511 || Dijkstra(adjacency array) duration: 1.3817
N=20: Dijkstra(adjacency list) duration: 0.1411 || Dijkstra(adjacency array) duration: 0.1783
N=30: Dijkstra(adjacency list) duration: 0.2351 || Dijkstra(adjacency array) duration: 0.2029
N=40: Dijkstra(adjacency list) duration: 0.2995 || Dijkstra(adjacency array) duration: 0.1992
N=20 first:
N=20: Dijkstra(adjacency list) duration: 1.6951 || Dijkstra(adjacency array) duration: 1.2283
N=10: Dijkstra(adjacency list) duration: 0.0608 || Dijkstra(adjacency array) duration: 0.0575
N=30: Dijkstra(adjacency list) duration: 0.1933 || Dijkstra(adjacency array) duration: 0.1555
I can't figure out why is this happening..
Upvotes: 0
Views: 24