在Spring MVC中,从哪里开始和结束计数器来测试速度执行时间?

我想知道一个特定页面渲染需要多长时间,Spring MVC框架中的各个部分可以启动和停止我的计时器?

顺便说一下,我应该使用什么java类来获得最准确的时间(以毫秒为单位)?

  • 创建一个javax.servlet.Filter并将其映射到web.xml中,高于所有其他filter。 在doFilter(..)中将您的coutner代码chain.doFilter(request, response)周围

  • 使用System.currentTimeMillisSystem.nanoTime() (更准确)或perf4j 。

这将显示服务器生成响应所需的时间。 如果您想在客户端看到页面的完整加载时间,请在Firefox上安装FireBug 。


关于Filter如何操作的说明。 请求进入 ,并作为参数传递给链中的第一个filter 。 现在filter可能决定继续执行,或者停止执行。 如果它选择继续,它会调用.chain.doFilter(..) 。 现在,对于该资源的所有已定义filter也会发生相同的情况,最终流程将到达目标Servlet (在本例中为DispatcherServlet )。 当doGet(..) / doPost(..)方法完成时,程序流在逻辑上返回到调用者 – 即链中的最后一个filter。 当它完成时 – 程序流程返回到上面的程序流程,直到它们到达第一个调用了chain.doFilter(..)filter。 这是您进行计时计算的行。 当第一个filter返回时,流程将转到servlet容器内部,很快响应就会发送到浏览器。 所以,你的代码将是:

 public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) { long start = System.nanoTime(); chain.doFilter(request, response); long end = System.nanoTime(); // log end-start }