spin-up時間に Servlet と Filter でどれくらい違いがでるのか ちょっと気になったので調べてみた。

いずれも中身は空っぽの NullServlet と NullFilter を用意して 実機で動かした。

結果:

  • NullServlet
    1241ms 1260cpu_ms
    1035ms 1306cpu_ms
    1035ms 1306cpu_ms
    1032ms 1516cpu_ms
    1253ms 1400cpu_ms
    1200ms 1540cpu_ms
    

  • NullFilter
    1175ms 1306cpu_ms 
     900ms 1423cpu_ms 
     910ms 1190cpu_ms 
    1442ms 1353cpu_ms 
    1152ms 1610cpu_ms 
     982ms 1190cpu_ms 
    

    うーん、気持早くなってる。
    100~200ms くらいだろうか。
    通常のアプリの spin-up 時間は 3000~4000ms くらいかかると思われるので 誤差の範囲と言えなくも無い。

    まぁキチキチを目指す場合は最初から Filter にしとけって事くらいかな。
    後から変えようとすると結構面倒だし。

    以下、ソース。

  • NullServlet.java: package org.kotemaru.test; import java.io.*; import java.net.*; import javax.servlet.*; import javax.servlet.http.*; public class NullServlet extends HttpServlet { public void init(ServletConfig config) throws ServletException { System.out.println("Servlet init"); } public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // nop. } }

  • NullFilter.java: package org.kotemaru.test; import java.io.*; import java.net.*; import javax.servlet.*; public class NullFilter implements Filter { public void init(FilterConfig config) throws ServletException { System.out.println("Filter init"); } public void destroy() { // nop. } public void doFilter(ServletRequest _req, ServletResponse _res, FilterChain chain) throws java.io.IOException, ServletException { // nop. } }

    関連記事: