Весной MVC, где начинать и заканчивать счетчик, чтобы проверить время выполнения скорости? - PullRequest
2 голосов
/ 05 сентября 2010

Я хочу знать, сколько времени занимает рендеринг конкретной страницы, где находятся различные части среды Spring MVC, которые я могу запускать и останавливать в таймере?

Кстати, какой класс Java следует использоватьполучить наиболее точное время в миллисекундах?

1 Ответ

10 голосов
/ 05 сентября 2010
  • Создайте javax.servlet.Filter и отобразите его в web.xml над всеми остальными фильтрами. В doFilter(..) поместите свой код coutner вокруг chain.doFilter(request, response)

  • Либо используйте System.currentTimeMillis, либо System.nanoTime() (точнее), либо perf4j .

Это покажет вам, сколько времени понадобилось серверу для генерации ответа. Если вы хотите видеть полное время загрузки страницы так, как ее видит клиент, установите FireBug на firefox.


Примечание о том, как работает Filter. Запрос поступает в и передается в качестве аргумента в первый фильтр в цепочке . Теперь фильтр может решить продолжить выполнение или остановить его. Если он решает продолжить, он вызывает .chain.doFilter(..). Теперь то же самое происходит со всеми определенными фильтрами для этого ресурса, и в конечном итоге поток достигает цели Servlet (в данном случае - DispatcherServlet). Когда метод doGet(..) / doPost(..) завершается, поток программы логически возвращается к вызывающей стороне, то есть к последнему фильтру в цепочке. Когда он завершается - поток программы возвращается к указанному выше, пока они не достигнут первого фильтра, который вызвал chain.doFilter(..). Это линия, где вы размещаете свои расчеты времени. Когда возвращается первый фильтр, поток переходит к внутренним компонентам контейнера сервлета, и вскоре ответ отправляется в браузер. Итак, ваш код будет:

public void doFilter(ServletRequest request,
   ServletResponse response, FilterChain chain) {

    long start = System.nanoTime();
    chain.doFilter(request, response);
    long end = System.nanoTime();
    // log end-start
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...