next try
-----Ursprüngliche Nachricht----- Von: Torsten Fohrer [mailto:[EMAIL PROTECTED] Gesendet: Dienstag, 9. September 2003 13:55 An: 'Tomcat Developers List' Betreff: AW: AW: AW: [5.0] JSP performance ... patched a snapshot to merge template text nodes. I implement following using a additional visitor in Generator.java - char[] arrays for templatetexts - same templatetexts -> only 1 char array for text, better without merging good/bad gimmicks: - removing empty templatetexts, example: only \r\n, "", null and so - removing \r\n after scripting elements One effect, i see is a lower memory usage from jasper pages cu Torsten Fohrer -----Ursprüngliche Nachricht----- Von: Remy Maucherat [mailto:[EMAIL PROTECTED] Gesendet: Dienstag, 9. September 2003 11:31 An: Tomcat Developers List Betreff: Re: AW: AW: [5.0] JSP performance ... Torsten Fohrer wrote: > what's about char[] array/string reusing? > Create only a char array for each unique templatetext node. > > -> > 10 x char[] jspx_text_1 = "something\n"; > 1 x char[] jspx_text_1 = "something\n"; Won't the VM do that internally ? Since apparently you have examined that issue in detail already, maybe you can give more details :) - What exactly did you implement ? - What's the code it generates ? Does it also merge the TemplateText nodes ? - Did it improve performance ? For example, if you try to run the test I gave, what kind of performance increase do you see ? Remy --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
package org.apache.jsp; import javax.servlet.*; import javax.servlet.http.*; import javax.servlet.jsp.*; import java.util.*; public final class h2000_jsp extends org.apache.jasper.runtime.HttpJspBase implements org.apache.jasper.runtime.JspSourceDependent { private char[] _jspx_textLine_1 = "<html><head><title>".toCharArray(); private char[] _jspx_textLine_2 = "</title>".toCharArray(); private char[] _jspx_textLine_3 = "</title></head><body>\r\n".toCharArray(); private char[] _jspx_textLine_4 = "<table>\r\n ".toCharArray(); private char[] _jspx_textLine_5 = "<tr bgcolor=\"".toCharArray(); private char[] _jspx_textLine_6 = "\">\r\n ".toCharArray(); private char[] _jspx_textLine_7 = "<td align=\"center\"><font size=\"+1\">".toCharArray(); private char[] _jspx_textLine_8 = "</font>".toCharArray(); private char[] _jspx_textLine_9 = "</font></td>\r\n ".toCharArray(); private char[] _jspx_textLine_10 = "</tr>\r\n ".toCharArray(); private char[] _jspx_textLine_11 = "</table>\r\n".toCharArray(); private char[] _jspx_textLine_12 = " Hello World Hello World Hello World Hello World Hello World Hello World Hello World Hello World Hello World Hello World ".toCharArray(); private char[] _jspx_textLine_13 = " Hello World Hello World Hello World Hello World Hello World Hello World Hello World Hello World Hello World Hello World <br/>\r\n ".toCharArray(); private char[] _jspx_textLine_14 = "</body></html>\r\n".toCharArray(); private static java.util.List _jspx_dependants; public java.util.List getDependants() { return _jspx_dependants; } public void _jspService(HttpServletRequest request, HttpServletResponse response) throws java.io.IOException, ServletException { JspFactory _jspxFactory = null; PageContext pageContext = null; ServletContext application = null; ServletConfig config = null; JspWriter out = null; Object page = this; JspWriter _jspx_out = null; try { _jspxFactory = JspFactory.getDefaultFactory(); response.setContentType("text/html"); pageContext = _jspxFactory.getPageContext(this, request, response, null, false, 8192, true); application = pageContext.getServletContext(); config = pageContext.getServletConfig(); out = pageContext.getOut(); _jspx_out = out; out.write( _jspx_textLine_1 ); out.write(String.valueOf( request.getParameter("title") )); out.write( _jspx_textLine_3 ); // build tight loop table with array data, multidimensional 5x6 String array[] = { "Hello", "World", "2000", "Hello", "World", "2000" }; Arrays.sort(array); String multi[][] = { array, array, array, array, array }; out.write( _jspx_textLine_4 ); for(int row=0; row < multi.length; row++) { out.write( _jspx_textLine_5 ); out.write(String.valueOf( (row % 2) == 1 ? "gray" : "white" )); out.write( _jspx_textLine_6 ); for(int col=0; col < array.length; col++) { out.write( _jspx_textLine_7 ); out.write(String.valueOf( multi[row][col] )); out.write( _jspx_textLine_9 ); } out.write( _jspx_textLine_10 ); } out.write( _jspx_textLine_11 ); String dummy = request.getParameter("integer"); int param = 2000; //Integer.parseInt(dummy); for (int i=1; i<=10; i++) { int var = i+param; out.write(String.valueOf(var)); out.write( _jspx_textLine_13 ); out.write(String.valueOf(var)); out.write( _jspx_textLine_13 ); out.write(String.valueOf(var)); out.write( _jspx_textLine_13 ); out.write(String.valueOf(var)); out.write( _jspx_textLine_13 ); out.write(String.valueOf(var)); out.write( _jspx_textLine_13 ); out.write(String.valueOf(var)); out.write( _jspx_textLine_13 ); out.write(String.valueOf(var)); out.write( _jspx_textLine_13 ); out.write(String.valueOf(var)); out.write( _jspx_textLine_13 ); out.write(String.valueOf(var)); out.write( _jspx_textLine_13 ); out.write(String.valueOf(var)); out.write( _jspx_textLine_13 ); out.write(String.valueOf(var)); out.write( _jspx_textLine_13 ); out.write(String.valueOf(var)); out.write( _jspx_textLine_13 ); out.write(String.valueOf(var)); out.write( _jspx_textLine_13 ); out.write(String.valueOf(var)); out.write( _jspx_textLine_13 ); out.write(String.valueOf(var)); out.write( _jspx_textLine_13 ); out.write(String.valueOf(var)); out.write( _jspx_textLine_13 ); out.write(String.valueOf(var)); out.write( _jspx_textLine_13 ); out.write(String.valueOf(var)); out.write( _jspx_textLine_13 ); out.write(String.valueOf(var)); out.write( _jspx_textLine_13 ); out.write(String.valueOf(var)); out.write( _jspx_textLine_13 ); } out.write( _jspx_textLine_14 ); } catch (Throwable t) { if (!(t instanceof SkipPageException)){ out = _jspx_out; if (out != null && out.getBufferSize() != 0) out.clearBuffer(); if (pageContext != null) pageContext.handlePageException(t); } } finally { if (_jspxFactory != null) _jspxFactory.releasePageContext(pageContext); } } }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]