You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@myfaces.apache.org by Michael Heinen <mi...@recommind.com> on 2010/01/15 11:07:04 UTC

dramatic performance decrease after update to JSF 1.2

Hi,

I have updated my application to JSF 1.2 during the last weeks.
Now I did some performance tests and the result has been alarming!
Performance declined by factor 2-4 depending on hardware and actions!!!

Measurements:
I used two different contexts on same Tomcat means identical tomcat config and JDK.
I started only one of the contexts for each tests run. Backend is also the same.
JMeter was used to fire requests but the difference can be seen by manual clicks immediately.

Obvious results:
Time is lost in phase render response.
Sample numbers for a single request on a slow notebook in phase render response (with debug logging):
 JSF1.1: 1594ms
 JSF1.1: 4766ms
(The numbers are much better without debug logging of course but the factor is still the same)

Environment:
  Tomcat 6.0.20
  JDK 1.6.0.18

Updated Libs:
  myFaces: 1.1.5 to 1.2.8
  tomahawk: 1.1.7 to 12-1.1.9
  richfaces: 3.1.5 to 3.3.3Beta1
  tiles: 1(struts) to 2.0.5
  jstl:  1.1.0 to 1.2
  commons-digester: 1.7 to 1.8
  oro-2.0.8 to jakarta-oro.jar

Settings:
  identical in 1.1 and 1.2:
    javax.faces.STATE_SAVING_METHOD=server
    org.apache.myfaces.NUMBER_OF_VIEWS_IN_SESSION = 1
    org.apache.myfaces.SERIALIZE_STATE_IN_SESSION = false
    org.apache.myfaces.COMPRESS_STATE_IN_SESSION=false

  1.2 new:
    org.apache.myfaces.SECRET added
    org.apache.myfaces.USE_ENCRYPTION = false
    org.apache.myfaces.CACHE_OLD_VIEWS_IN_SESSION_MODE=off (I patched this in 1.1 and removed the old references)


Questions before I start profiling and probably sink time:
1) Is this typical or expected?
2) Is any new configuration flag added to 1.2 which could have high impact on performance?
3) Any other hints where to look at?

Michael

RE: dramatic performance decrease after update to JSF 1.2

Posted by "Carlson, John W." <ca...@llnl.gov>.
Not surprising at all.  Obviously, a hardware vendor who makes their money selling hardware, not software, wants to sell more hardware.
Also more features means slower software.

John

-----Original Message-----
From: Michael Heinen [mailto:michael.heinen@recommind.com] 
Sent: Friday, January 29, 2010 12:36 AM
To: MyFaces Discussion
Subject: RE: dramatic performance decrease after update to JSF 1.2

I am really astonished that nobody else out in the world faced or addressed this problem so far.
JSF 1.2 seems to be much slower than JSF 1.1 (with jsps, don't know about facelets).

It can be reproduced easily with a simple JSF app without tiles, richfaces and all this stuff.
Just create a simple page with a few hundred output tags without any EL: 
e.g. <h:outputText value="1" style="z-index:4711;"/>.

It is nearly two times slower and the time is lost during phase render response.
Same effect occurs with Mojarra, which seems to be faster than Myfaces (at least for this simple case).

This effect is of course worse in case of heavy load on the app.
A version upgrade should not result in such a performance loss, we are not talking about a few percent.

Does anybody have an explanation for this?
Is it caused by separating tree creation from rendering?
Is the component tree now walked completely two times, for creation and rendering?

Michael


-----Original Message-----
From: Michael Heinen [mailto:michael.heinen@recommind.com] 
Sent: Freitag, 15. Januar 2010 11:07
To: MyFaces Discussion
Subject: dramatic performance decrease after update to JSF 1.2

Hi,

I have updated my application to JSF 1.2 during the last weeks.
Now I did some performance tests and the result has been alarming!
Performance declined by factor 2-4 depending on hardware and actions!!!

Measurements:
I used two different contexts on same Tomcat means identical tomcat config and JDK.
I started only one of the contexts for each tests run. Backend is also the same.
JMeter was used to fire requests but the difference can be seen by manual clicks immediately.

Obvious results:
Time is lost in phase render response.
Sample numbers for a single request on a slow notebook in phase render response (with debug logging):
 JSF1.1: 1594ms
 JSF1.1: 4766ms
(The numbers are much better without debug logging of course but the factor is still the same)

Environment:
  Tomcat 6.0.20
  JDK 1.6.0.18

Updated Libs:
  myFaces: 1.1.5 to 1.2.8
  tomahawk: 1.1.7 to 12-1.1.9
  richfaces: 3.1.5 to 3.3.3Beta1
  tiles: 1(struts) to 2.0.5
  jstl:  1.1.0 to 1.2
  commons-digester: 1.7 to 1.8
  oro-2.0.8 to jakarta-oro.jar

Settings:
  identical in 1.1 and 1.2:
    javax.faces.STATE_SAVING_METHOD=server
    org.apache.myfaces.NUMBER_OF_VIEWS_IN_SESSION = 1
    org.apache.myfaces.SERIALIZE_STATE_IN_SESSION = false
    org.apache.myfaces.COMPRESS_STATE_IN_SESSION=false

  1.2 new:
    org.apache.myfaces.SECRET added
    org.apache.myfaces.USE_ENCRYPTION = false
    org.apache.myfaces.CACHE_OLD_VIEWS_IN_SESSION_MODE=off (I patched this in 1.1 and removed the old references)


Questions before I start profiling and probably sink time:
1) Is this typical or expected?
2) Is any new configuration flag added to 1.2 which could have high impact on performance?
3) Any other hints where to look at?

Michael

RE: dramatic performance decrease after update to JSF 1.2

Posted by Michael Heinen <mi...@recommind.com>.
I have some news regarding the performance problem.

The major performance decrease was caused by a Tomcat Bug.
See https://issues.apache.org/bugzilla/show_bug.cgi?id=48600
Setting metadata-complete="true" in web.xml improved the 1.2 speed significantly!

There seems to be still another problem in Tocmat:
Average results of 500 calls of a simple page (jsp) with 1000 h:output tags:

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

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

Is anybody here aware of other Tomcat bugs or settings that could explain the above numbers?
I'll also ask on the tomcat list.

Michael


-----Original Message-----
From: Michael Heinen [mailto:michael.heinen@recommind.com] 
Sent: Freitag, 29. Januar 2010 09:36
To: MyFaces Discussion
Subject: RE: dramatic performance decrease after update to JSF 1.2

I am really astonished that nobody else out in the world faced or addressed this problem so far.
JSF 1.2 seems to be much slower than JSF 1.1 (with jsps, don't know about facelets).

It can be reproduced easily with a simple JSF app without tiles, richfaces and all this stuff.
Just create a simple page with a few hundred output tags without any EL: 
e.g. <h:outputText value="1" style="z-index:4711;"/>.

It is nearly two times slower and the time is lost during phase render response.
Same effect occurs with Mojarra, which seems to be faster than Myfaces (at least for this simple case).

This effect is of course worse in case of heavy load on the app.
A version upgrade should not result in such a performance loss, we are not talking about a few percent.

Does anybody have an explanation for this?
Is it caused by separating tree creation from rendering?
Is the component tree now walked completely two times, for creation and rendering?

Michael


-----Original Message-----
From: Michael Heinen [mailto:michael.heinen@recommind.com] 
Sent: Freitag, 15. Januar 2010 11:07
To: MyFaces Discussion
Subject: dramatic performance decrease after update to JSF 1.2

Hi,

I have updated my application to JSF 1.2 during the last weeks.
Now I did some performance tests and the result has been alarming!
Performance declined by factor 2-4 depending on hardware and actions!!!

Measurements:
I used two different contexts on same Tomcat means identical tomcat config and JDK.
I started only one of the contexts for each tests run. Backend is also the same.
JMeter was used to fire requests but the difference can be seen by manual clicks immediately.

Obvious results:
Time is lost in phase render response.
Sample numbers for a single request on a slow notebook in phase render response (with debug logging):
 JSF1.1: 1594ms
 JSF1.1: 4766ms
(The numbers are much better without debug logging of course but the factor is still the same)

Environment:
  Tomcat 6.0.20
  JDK 1.6.0.18

Updated Libs:
  myFaces: 1.1.5 to 1.2.8
  tomahawk: 1.1.7 to 12-1.1.9
  richfaces: 3.1.5 to 3.3.3Beta1
  tiles: 1(struts) to 2.0.5
  jstl:  1.1.0 to 1.2
  commons-digester: 1.7 to 1.8
  oro-2.0.8 to jakarta-oro.jar

Settings:
  identical in 1.1 and 1.2:
    javax.faces.STATE_SAVING_METHOD=server
    org.apache.myfaces.NUMBER_OF_VIEWS_IN_SESSION = 1
    org.apache.myfaces.SERIALIZE_STATE_IN_SESSION = false
    org.apache.myfaces.COMPRESS_STATE_IN_SESSION=false

  1.2 new:
    org.apache.myfaces.SECRET added
    org.apache.myfaces.USE_ENCRYPTION = false
    org.apache.myfaces.CACHE_OLD_VIEWS_IN_SESSION_MODE=off (I patched this in 1.1 and removed the old references)


Questions before I start profiling and probably sink time:
1) Is this typical or expected?
2) Is any new configuration flag added to 1.2 which could have high impact on performance?
3) Any other hints where to look at?

Michael


RE: dramatic performance decrease after update to JSF 1.2

Posted by Michael Heinen <mi...@recommind.com>.
I am really astonished that nobody else out in the world faced or addressed this problem so far.
JSF 1.2 seems to be much slower than JSF 1.1 (with jsps, don't know about facelets).

It can be reproduced easily with a simple JSF app without tiles, richfaces and all this stuff.
Just create a simple page with a few hundred output tags without any EL: 
e.g. <h:outputText value="1" style="z-index:4711;"/>.

It is nearly two times slower and the time is lost during phase render response.
Same effect occurs with Mojarra, which seems to be faster than Myfaces (at least for this simple case).

This effect is of course worse in case of heavy load on the app.
A version upgrade should not result in such a performance loss, we are not talking about a few percent.

Does anybody have an explanation for this?
Is it caused by separating tree creation from rendering?
Is the component tree now walked completely two times, for creation and rendering?

Michael


-----Original Message-----
From: Michael Heinen [mailto:michael.heinen@recommind.com] 
Sent: Freitag, 15. Januar 2010 11:07
To: MyFaces Discussion
Subject: dramatic performance decrease after update to JSF 1.2

Hi,

I have updated my application to JSF 1.2 during the last weeks.
Now I did some performance tests and the result has been alarming!
Performance declined by factor 2-4 depending on hardware and actions!!!

Measurements:
I used two different contexts on same Tomcat means identical tomcat config and JDK.
I started only one of the contexts for each tests run. Backend is also the same.
JMeter was used to fire requests but the difference can be seen by manual clicks immediately.

Obvious results:
Time is lost in phase render response.
Sample numbers for a single request on a slow notebook in phase render response (with debug logging):
 JSF1.1: 1594ms
 JSF1.1: 4766ms
(The numbers are much better without debug logging of course but the factor is still the same)

Environment:
  Tomcat 6.0.20
  JDK 1.6.0.18

Updated Libs:
  myFaces: 1.1.5 to 1.2.8
  tomahawk: 1.1.7 to 12-1.1.9
  richfaces: 3.1.5 to 3.3.3Beta1
  tiles: 1(struts) to 2.0.5
  jstl:  1.1.0 to 1.2
  commons-digester: 1.7 to 1.8
  oro-2.0.8 to jakarta-oro.jar

Settings:
  identical in 1.1 and 1.2:
    javax.faces.STATE_SAVING_METHOD=server
    org.apache.myfaces.NUMBER_OF_VIEWS_IN_SESSION = 1
    org.apache.myfaces.SERIALIZE_STATE_IN_SESSION = false
    org.apache.myfaces.COMPRESS_STATE_IN_SESSION=false

  1.2 new:
    org.apache.myfaces.SECRET added
    org.apache.myfaces.USE_ENCRYPTION = false
    org.apache.myfaces.CACHE_OLD_VIEWS_IN_SESSION_MODE=off (I patched this in 1.1 and removed the old references)


Questions before I start profiling and probably sink time:
1) Is this typical or expected?
2) Is any new configuration flag added to 1.2 which could have high impact on performance?
3) Any other hints where to look at?

Michael