https://issues.apache.org/bugzilla/show_bug.cgi?id=48750

           Summary: performance problems with JSF 1.2
           Product: Tomcat 6
           Version: 6.0.24
          Platform: PC
        OS/Version: Windows XP
            Status: NEW
          Severity: major
          Priority: P2
         Component: Jasper
        AssignedTo: dev@tomcat.apache.org
        ReportedBy: m...@recommind.com


I noticed serious performance problems with JSF 1.2 and Tomcat which seems to
be caused by Tomcat.
The corresponding discussion is available here:
http://marc.info/?l=tomcat-user&m=126607491020706&w=2

Metadata-complete is set to true in web.xml 
(see https://issues.apache.org/bugzilla/show_bug.cgi?id=48600)

I deployed two web apps to Tomcat and Jetty and compared performance data.
Average results of 500 calls of a simple jsf page (jsp) with 1000 h:output
tags:

JSF 1.1:
  Tomcat 6.0.24: 26ms
  Jetty 7.0.1: 35ms

JSF 1.2:
  Tomcat 6.0.24: 72ms
  Jetty 7.0.1: 41ms

Result:
Tomcat is much faster with JSF 1.1 but terrible slow with JSF 1.2!

One difference between Tomcat and Jetty in the compiled jsp is the
AnnotationHelper.

Compiled method for a single outputtext tag:
Tomcat:
private boolean
_jspx_meth_h_005foutputText_005f999(javax.servlet.jsp.tagext.JspTag
_jspx_th_h_005fform_005f0, PageContext _jspx_page_context)
        throws Throwable {
  PageContext pageContext = _jspx_page_context;
  JspWriter out = _jspx_page_context.getOut();
  //  h:outputText
  org.apache.myfaces.taglib.html.HtmlOutputTextTag
_jspx_th_h_005foutputText_005f999 = new
org.apache.myfaces.taglib.html.HtmlOutputTextTag();
 
org.apache.jasper.runtime.AnnotationHelper.postConstruct(_jsp_annotationprocessor,
_jspx_th_h_005foutputText_005f999);
  _jspx_th_h_005foutputText_005f999.setPageContext(_jspx_page_context);
  _jspx_th_h_005foutputText_005f999.setParent((javax.servlet.jsp.tagext.Tag)
_jspx_th_h_005fform_005f0);
  // /1000hout.jsp(1021,0) name = value type = javax.el.ValueExpression reqTime
= false required = false fragment = false deferredValue = true expectedTypeName
= java.lang.Object deferredMethod = false methodSignature = null
  _jspx_th_h_005foutputText_005f999.setValue(new
org.apache.jasper.el.JspValueExpression("/1000hout.jsp(1021,0)
'1'",_el_expressionfactory.createValueExpression("1",java.lang.Object.class)));
  // /1000hout.jsp(1021,0) name = style type = javax.el.ValueExpression reqTime
= false required = false fragment = false deferredValue = true expectedTypeName
= java.lang.Object deferredMethod = false methodSignature = null
  _jspx_th_h_005foutputText_005f999.setStyle(new
org.apache.jasper.el.JspValueExpression("/1000hout.jsp(1021,0)
'z-index:29202;'",_el_expressionfactory.createValueExpression("z-index:29202;",java.lang.Object.class)));
  _jspx_th_h_005foutputText_005f999.setJspId("jsp_711124934_1001");
  int _jspx_eval_h_005foutputText_005f999 =
_jspx_th_h_005foutputText_005f999.doStartTag();
  if (_jspx_th_h_005foutputText_005f999.doEndTag() ==
javax.servlet.jsp.tagext.Tag.SKIP_PAGE) {
    _jspx_th_h_005foutputText_005f999.release();
   
org.apache.jasper.runtime.AnnotationHelper.preDestroy(_jsp_annotationprocessor,
_jspx_th_h_005foutputText_005f999);
    return true;
  }
  _jspx_th_h_005foutputText_005f999.release();
 
org.apache.jasper.runtime.AnnotationHelper.preDestroy(_jsp_annotationprocessor,
_jspx_th_h_005foutputText_005f999);
  return false;
}

Jetty:
private boolean _jspx_meth_h_outputText_999(javax.servlet.jsp.tagext.JspTag
_jspx_th_h_form_0, PageContext _jspx_page_context)
        throws Throwable {
  PageContext pageContext = _jspx_page_context;
  JspWriter out = _jspx_page_context.getOut();
  //  h:outputText
  org.apache.myfaces.taglib.html.HtmlOutputTextTag _jspx_th_h_outputText_999 =
new org.apache.myfaces.taglib.html.HtmlOutputTextTag();
  if (_jspx_resourceInjector != null) {
    _jspx_resourceInjector.inject(_jspx_th_h_outputText_999      );
  }
  _jspx_th_h_outputText_999.setPageContext(_jspx_page_context);
  _jspx_th_h_outputText_999.setParent((javax.servlet.jsp.tagext.Tag)
_jspx_th_h_form_0);
  _jspx_th_h_outputText_999.setJspId("id2019");
 
_jspx_th_h_outputText_999.setValue(org.apache.jasper.runtime.PageContextImpl.getValueExpression("1",
(PageContext)_jspx_page_context, java.lang.Object.class, null));
 
_jspx_th_h_outputText_999.setStyle(org.apache.jasper.runtime.PageContextImpl.getValueExpression("z-index:29202;",
(PageContext)_jspx_page_context, java.lang.Object.class, null));
  int _jspx_eval_h_outputText_999 = _jspx_th_h_outputText_999.doStartTag();
  if (_jspx_th_h_outputText_999.doEndTag() ==
javax.servlet.jsp.tagext.Tag.SKIP_PAGE) {
   
_jspx_tagPool_h_outputText_value_style_nobody.reuse(_jspx_th_h_outputText_999);
    return true;
  }
 
_jspx_tagPool_h_outputText_value_style_nobody.reuse(_jspx_th_h_outputText_999);
  return false;
}

A demo web app is attached
Just call http://<server>:<port>/jsf12/faces/1000hout.jsp

Can the AnnotationHelper be turned off completely?

-- 
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to