Omnni777
Omnni777

Reputation: 3

System.nanoTime() when being called more than once, does not work properly

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

Answers (0)

Related Questions