1 package org.lateralnz.demo.view; 2 3 import java.io.IOException ; 4 import java.io.PrintWriter ; 5 import java.util.HashMap ; 6 import java.util.Locale ; 7 8 import javax.servlet.http.HttpServlet ; 9 import javax.servlet.http.HttpServletRequest ; 10 import javax.servlet.http.HttpServletResponse ; 11 import javax.servlet.RequestDispatcher ; 12 import javax.servlet.http.HttpSession ; 13 import javax.servlet.ServletConfig ; 14 import javax.servlet.ServletException ; 15 16 import org.apache.log4j.Logger; 17 18 import org.lateralnz.demo.ejb.Basic; 19 import org.lateralnz.demo.ejb.BasicHome; 20 import org.lateralnz.common.util.IOUtils; 21 import org.lateralnz.common.util.JNDIUtils; 22 import org.lateralnz.common.util.NumericUtils; 23 import org.lateralnz.common.util.ServletUtils; 24 import org.lateralnz.common.util.StringUtils; 25 26 public class PerfServlet extends HttpServlet { 27 28 private int rawcount; 29 private long rawtime; 30 31 protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException , IOException { 32 PrintWriter out = null; 33 try { 34 out = response.getWriter(); 35 out.println("<html><body>\n"); 36 37 int threads = 100; 38 int iterations = 100; 39 40 String tmp = request.getParameter("threads"); 41 if (!StringUtils.isEmpty(tmp)) { 42 threads = Integer.parseInt(tmp); 43 } 44 45 tmp = request.getParameter("iterations"); 46 if (!StringUtils.isEmpty(tmp)) { 47 iterations = Integer.parseInt(tmp); 48 } 49 50 rawtest(out, threads, iterations); 51 52 out.println("</body></html>\n"); 53 } 54 finally { 55 if (out != null) { 56 out.flush(); 57 IOUtils.close(out); 58 } 59 } 60 } 61 62 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException , IOException { 63 processRequest(request, response); 64 } 65 66 70 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException , IOException { 71 processRequest(request, response); 72 } 73 74 public String getServletInfo() { 75 return "Short description"; 76 } 77 78 private final void rawtest(final PrintWriter out, final int threads, final int iterations) { 79 out.println("rawtest<br />\n"); 80 rawcount = 0; 81 82 Thread [] t = new Thread [threads]; 83 for (int i = 0; i < threads; i++) { 84 t[i] = new Thread () { 85 public void run() { 86 Basic ejb = null; 87 try { 88 BasicHome home = (BasicHome)JNDIUtils.getEJBHome("DEMO/Basic", BasicHome.class); 89 ejb = home.create(); 90 for (int i = 0; i < iterations; i++) { 91 ejb.getRandom(10000); 92 } 93 } 94 catch (Exception e) { 95 e.printStackTrace(); 96 } 97 finally { 98 JNDIUtils.remove(ejb); 99 } 100 rawtestend(out, threads, iterations); 101 } 102 }; 103 } 104 105 rawtime = System.currentTimeMillis(); 106 for (int i = 0; i < threads; i++) { 107 t[i].start(); 108 } 109 110 while (rawcount < threads) { 111 try { Thread.currentThread().sleep(1000); } catch (Exception e) { } 112 } 113 } 114 115 private final void rawtestend(PrintWriter out, int threads, int iterations) { 116 rawcount++; 117 if (rawcount >= threads) { 118 rawtime = System.currentTimeMillis() - rawtime; 119 out.println("rawtest :: " + threads + " threads, " + iterations + " iterations took " + rawtime + "ms<br />\n"); 120 out.println("average per call - " + NumericUtils.format(this.getClass().getName(),((double)rawtime / ((double)threads * iterations)), "######0.#######") + "<br />\n"); 121 } 122 123 } 124 } | Popular Tags |