2014-08-27 3 views
0

Я создаю небольшой инструмент для измерения времени работы сервлета Java. Сервлет дает изображение типа EPS в выходном потоке (поэтому, если я вызываю сервлет из браузера, загрузка EPS-изображения или всплывающее окно загрузки зависит от настроек).Как измерить время работы сервлета?

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

Моя проблема: Я хочу избежать учета дорогостоящих операций ввода-вывода, поэтому я хотел бы загрузить EPS на каждый вызов сервлета, но не хочу сохранять их на своем жестком диске.

Я написал этот код:

 long startTime = System.nanoTime(); 
     try { 
      URLConnection connection = new URL(url + "?" + query).openConnection(); 
      connection.setRequestProperty("Accept-Charset", charset); 
      InputStream response = connection.getInputStream(); 
     } catch (Exception e) { 
      System.out.println("Connection failed!"); 
      e.printStackTrace(); 
      System.exit(0); 
     } 
     long endTime = System.nanoTime(); 
     long deltaTime = endTime - startTime; 

ли это делать то, что я хочу? Или мне нужно что-то делать с imputsream? Загружает ли изображение EPS на каждый вызов сервлета? Я знаю, что они не спасены, но они загружаются?

Спасибо!

+1

код получает ссылку на 'InputStream' но не считывать данные из него (что, в свою очередь, сделало бы реально скачать бег). Таким образом, я думаю, что это только измеряет время, необходимое для установления соединения и загрузки некоторых первых данных, до тех пор, пока не будут заполнены буферы на стороне клиента. EDIT: для небольших фотографий это может дать хорошие результаты. Для крупных, почти наверняка нет. Я бы также сказал, что вы правы в необходимости избегать операций на стороне клиента на стороне клиента. Для этого я полностью прочитал входной поток и выбросил данные. –

+2

Трудно сказать. Вы измеряете время начала ответа, но вы не измеряете время передачи. Я бы предложил написать TimingServlet, тогда вы можете настроить [цепочку] (http://docstore.mik.ua/orelly/java-ent/servlet/ch02_05.htm). –

+0

Большое спасибо вам обоим! Я рассмотрю ваши предложения. –

ответ

0

Просто прочитайте InputStream и отбрасывать данные:

byte [] buffer = new byte[4096]; 
while (input.read(buffer) != -1); 
Смежные вопросы