2016-11-28 3 views
1

115 개의 항목이있는 콜렉션의 경과 시간을 측정하려고합니다. 내 문제는 디버깅 할 때만 경과 시간을 측정 할 수 있다는 것입니다. StopWatch.stop(); 내 테스트를 정상적으로 실행하면 StopWatch.stop의 값은 길이가 길지만 0입니다. 처음에는 컬렉션이 작다고 생각했지만이 경과 시간은 긴 가치로 전달되어야합니다. 표준 라이브러리에서StopWatch를 사용한 콜렉션 테스트

// times-collection will be initialised somewhere else 
//--------------------------------------------------------------- 
for (int i=0; i<10; i++){ 
    final StopWatch stopwatchA = new StopWatch(); 
    final StopWatch stopwatchB = new StopWatch(); 
    Iterator<String> iterator = times.iterator(); 

    stopwatchA.start(); 
    while(iterator.hasNext()){ 
     if (iterator.next().equals("XXX")) { 
      break; 
     } 
    } 
    stopwatchA.stop(); 
    stopwatchB.start(); 
    for (String tzd : times) { 

     if (tzd.equals("XXX")) {     
      break; 
     }   
    } 
    stopwatchB.stop(); 

    if(stopwatchA.getTime() < stopwatchB.getTime()){ 
     System.out.println("ITERATOR IS FASTER: iterator: " + estimatedTimeIterator + " FOR-TIME: " + estimatedTimeFor); 
    }else if(stopwatchA.getTime() > stopwatchB.getTime()){ 
     System.out.println("FOR IS FASTER: iterator: " + estimatedTimeIterator + " FOR-TIME: " + estimatedTimeFor); 
    } 
} 
+1

어떤 StopWatch를 사용하고 계십니까? 봄 이니? – developer

+0

nanotime을 사용하여 작성한이 "크로노 그래프"를 사용할 수 있습니다. https://github.com/marcolopes/dma/blob/master/org.dma.java/src/org/dma/java/util/Chronograph.java – marcolopes

답변

1

스톱워치 stopwatchA.start()와 stopwatchA.stop() 를 사용하여 시스템 간의 1ms 이하를하는 것이 완벽하게 가능하다 115 개 항목으로 된 컬렉션을 위해 내부에 System.currentTimeMillis() 을 사용합니다. 대신 nanoTime().

+0

ok , 나는 여전히 밀리 초 동안 충분하다고 생각했다. –

관련 문제