2016-11-28 8 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

Вы можете использовать этот «хронограф», который я написал, используя нанотим: https://github.com/marcolopes/dma/blob/master/org.dma.java/src/org/dma/java/util/Chronograph.java – marcolopes

ответ

1

Секундомер из стандартных библиотек использует внутренне System.currentTimeMillis() Для коллекции с 115 пунктов, вполне возможно иметь меньше 1мс между stopwatchA.start() и stopwatchA.stop() использования системы. nanoTime().

+0

ok , я думал, это все еще достаточно для миллисекунд –

 Смежные вопросы

  • Нет связанных вопросов^_^