2017-02-16 3 views
0

У меня есть этот скрипт, который запускает кучу запросов и записывает результаты и время выполнения в txt-файл.Метод секундомера Java

Это хорошо работает для небольших наборов данных, но для больших длинных запросов я получаю много

Этот секундомер уже запущен. сообщений.

Вот соответствующий код

Stopwatch timer = Stopwatch.createUnstarted(); 


    for(String query: qrys) { 
     try { 
      timer.start(); 
      resQryES = methodforQrys(url, query); // query result is saved in the iterable Map resQryES 
      timer.stop(); 

      out.println("Query: " + query); 
      out.println("Query execution time: " + timer); 
      out.println("Query Results : " + resQryES); 


     } catch (Exception ex) { 
      System.out.println(ex.getMessage()); 
     } 

    } 


    out.close(); 

Я думаю, может быть, его, потому что запросы выполняются параллельно, так секундомер все еще работает - так что он работает с меньшими наборами данных, как запросы так быстро не работает параллельно.

Должен ли я попробовать использовать другой тип цикла, где я использую индексы и создать совпадающую карту/массив значений таймера, так что никто не перепутать ...

+0

Значит ли 'methodforQrys' начать новую нить? –

+0

Вы пытались поставить 'Секундомер таймер = секундомер.createUnstarted();' внутри цикла 'for'? –

+0

Да - это исправлено, спасибо! , причина, по которой я не пробовал раньше, поскольку я полагал, что у меня все было - но я сделал это раньше с помощью 'Stopwatch.createStarted();' – Yozzer

ответ

0

Как уже упоминался в комментариях, а также. Просто поместите эту строку кода в цикл for, чтобы он сбрасывался для каждой итерации.

Stopwatch timer = Stopwatch.createUnstarted();

Ваш код должен выглядеть следующим образом:

for(String query: qrys) { 
    Stopwatch timer = Stopwatch.createUnstarted(); 
    try { 
     timer.start(); 
     resQryES = methodforQrys(url, query); // query result is saved in the iterable Map resQryES 
     timer.stop(); 

     out.println("Query: " + query); 
     out.println("Query execution time: " + timer); 
     out.println("Query Results : " + resQryES); 


    } catch (Exception ex) { 
     System.out.println(ex.getMessage()); 
    } 

} 


out.close(); 
+0

yep, спасибо много всего ... btw, просто на стороне записки, если я хотите отлаживать или просматривать каждую созданную здесь нить, каков наилучший способ? – Yozzer

+0

@Yozzer В частности, здесь нет отдельных потоков. Для отладки вы можете запустить свой код с помощью отладчика, который будет выполнять шаги, которые будут зависеть от используемой среды IDE. –

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