myfaces-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Leonardo Uribe <lu4...@gmail.com>
Subject Re: Weird PlexusContainer object in ViewRoot
Date Thu, 26 Jan 2012 16:17:13 GMT
Hi

I have committed all patches planned to include in the next release related
to performance improvements.

@Thomas Andraschko : It could be great if you have some time to try the
code and share your findings. You can find 2.1.6-SNAPSHOT or
2.0.12-SNAPSHOT snapshots here:

https://repository.apache.org/content/repositories/snapshots/org/apache/myfaces/core

regards,

Leonardo Uribe

2012/1/11 Thomas Andraschko <zoigln@googlemail.com>

> WOW, great! I'm looking forward for the next version and will rerun my
> tests again!
>
> Add this as subproject to MyFaces (commons or else) would be great and an
> honor!
> ASL v2 is no problem as the initial version was also licensed ASL v2.
>
> 2012/1/10 Leonardo Uribe <lu4242@gmail.com>
>
> > Hi
> >
> > Thanks for your interest about doing these comparisons.
> >
> > 2012/1/10 Thomas Andraschko <zoigln@googlemail.com>:
> > > So, here are finally some results from JMeter for 600 requests. Both
> > > MyFaces and Mojarra runs on Jetty8.
> > >
> > > http://img59.imageshack.us/img59/4720/stateless.jpg
> > >
> > > AFAICS MyFaces performs better on postbacks but Mojarra seems to be
> > faster
> > > for get requests.
> > >
> >
> > Yes, MyFaces has some smart optimizations in that part that avoids
> > process the view before render view (second call to buildView), and
> > there are other improvements inside facelets algorithm that at the end
> > reduce the time required to build a view.
> >
> > > Anybody knows why Mojarra is a lot faster for the first example (Simple
> > > page with 2000 items in a h:datatable) under load?
> > >
> >
> > Doing some black box tests with NetBeans Profiler, I notice Mojarra
> > has some optimizations in the renderer part. The bottleneck is caused
> > because MyFaces did many unnecessary calls to HashMap.get() (one per
> > property). This was improved using a "flag" property for common
> > passthrough attributes, just like in the old times when memory was
> > scarce and assembler was the king. That optimization is still
> > incomplete, but I already have it on my laptop (without review), so
> > I'll commit that code in a few days.
> >
> > Another hot spot is our ResponseWriter implementation. It creates a
> > lot of StringBuilder instances, but it is possible to rearrange the
> > code to eliminate them and write directly over the stream, or like
> > trinidad does, reuse the same instance over and over. Again, I already
> > have the code but it will take some days to review and commit.
> >
> > The good news are with these changes and other improvements already
> > done / todo , MyFaces can become even faster and lighter, requiring
> > less memory resources. Maybe with these changes it could be faster
> > than Mojarra in all situations (note I'm speculating here and I don't
> > have the data that prove that (not yet but soon) ).
> >
> > > Also i sent back the the code to rudy for 3 weeks ago but he did not
> > shared
> > > / posted it. Now i completely refactored the code again and added
> > complete
> > > MyFaces compatibility.
> > > Is anyone interested in this extension?
> > > Where could i share it?
> > > I could add it as submodule to primefaces-extensions but it has nothing
> > to
> > > do with primefaces...
> > > MyFaces Extension or else would be great :D
> > >
> >
> > Maybe apache extras is a good place (I don't know if the code can be
> > licensed under ASL v2). I think it is a interesting goodie, and maybe
> > a good place could be MyFaces commons.
> >
> > regards,
> >
> > Leonardo Uribe
> >
> > >
> > > 2012/1/5 Thomas Andraschko <zoigln@googlemail.com>
> > >
> > >> Hi Mark,
> > >>
> > >> thanks for sharing your request times!
> > >>
> > >> don't know but it's really that slow^^
> > >> Currently the test page is embedded in a private project but i will
> > create
> > >> an own test project only for "stateless-jsf".
> > >> I will also do some load tests with JMeter and share the result then.
> > >>
> > >> Hopefully MYFACES-3266 can be done in the next versions, this blows up
> > my
> > >> code :)
> > >>
> > >> Best regards,
> > >> Thomas
> > >>
> > >>
> > >> 2011/12/31 Mark Struberg <struberg@yahoo.de>
> > >>
> > >>> MyFaces is faster, but I didn't think that Mojarra is so slow ^^.
> > >>> Our fat pages (~2000 lines in a complex h:dataTable -> more than
> > 300.000
> > >>> ELResolver invocations) use to take up to 350ms. Small pages render
> in
> > 17ms
> > >>> on our Server with OWB and MyFaces.
> > >>>
> > >>> I once tested the fat pages with Glassfish and didn't came under 5
> > >>> seconds. But this was quite some time ago when Weld used to be much
> > slower
> > >>> (we now gave them a few hints on performance improvements in the
> > meantme)
> > >>> and the Sun EL impl had some serious performance hogs.
> > >>>
> > >>>
> > >>> Is your test page setup freely available? You might share your
> findings
> > >>> with the Mojarra team. They might be interested to check where they
> > have
> > >>> problematic spots.
> > >>>
> > >>> LieGrue,
> > >>> strub
> > >>>
> > >>>
> > >>> ----- Original Message -----
> > >>> > From: Thomas Andraschko <zoigln@googlemail.com>
> > >>> > To: MyFaces Discussion <users@myfaces.apache.org>
> > >>> > Cc:
> > >>> > Sent: Saturday, December 31, 2011 4:21 AM
> > >>> > Subject: Re: Weird PlexusContainer object in ViewRoot
> > >>> >
> > >>> > Hi,
> > >>> >
> > >>> > so i just did some final tests and these are the result with
> MyFaces
> > >>> and a
> > >>> > simple test page.
> > >>> > The values are not really accurate, i just tested in on my locale
> > system
> > >>> > with firebug for around 10-15 times.
> > >>> >
> > >>> > AJAX PostBacks (Production):
> > >>> > Before: 32-52ms
> > >>> > After: 23-37ms
> > >>> >
> > >>> > PostBack (Production):
> > >>> > Before: 27ms
> > >>> > After: 12ms
> > >>> >
> > >>> > The same page with Mojarra:
> > >>> >
> > >>> > AJAX PostBacks (Production):
> > >>> > Before: 148-196ms
> > >>> > After: 26-50ms
> > >>> >
> > >>> > PostBack (Production):
> > >>> > Before: 140-170ms
> > >>> > After: 15-27ms
> > >>> >
> > >>> > Also if the values are not really accurate, is MyFaces really
that
> > much
> > >>> > faster?
> > >>> >
> > >>> > You said that you use a simliar plugin for stateless views.
> > >>> > How does your plugin work? Some details would be great :)
> > >>> >
> > >>> > Best regards
> > >>> > Thomas
> > >>> >
> > >>> > 2011/12/30 Thomas Andraschko <zoigln@googlemail.com>
> > >>> >
> > >>> >>  Hi,
> > >>> >>
> > >>> >>  yep, thanks!
> > >>> >>  I completly redeveloped it (i also contributed the new code
back)
> > and
> > >>> i
> > >>> >>  just test it but the improvement is similar - it's much faster!
> > >>> >>  I can post the detail later :)
> > >>> >>
> > >>> >>
> > >>> >>
> > >>> >>  2011/12/30 Martin Koci <martin.kocicak.koci@gmail.com>
> > >>> >>
> > >>> >>>  Hi,
> > >>> >>>
> > >>> >>>  do you mean non-static logger in myfaces UIViewRoot ?
That is
> > >>> probably
> > >>> >>>  problem [1] - I must solve it finally.
> > >>> >>>
> > >>> >>>  I checked quickly statelessjsf - we use similar solution
in some
> > jsf
> > >>> >>>  project - completely stateless views.
> > >>> >>>
> > >>> >>>  Which improvement do you see with myfaces + statelessjsf?
The
> blog
> > >>> [2]
> > >>> >>>  shows at the first picture time 98ms vs. 7ms : 90% improvement:
> > did
> > >>> you
> > >>> >>>  get similar results with myfaces?
> > >>> >>>
> > >>> >>>  Regards,
> > >>> >>>
> > >>> >>>  Kočičák
> > >>> >>>
> > >>> >>>  [1] https://issues.apache.org/jira/browse/MYFACES-3266
> > >>> >>>  [2]
> > >>> >>>
> > >>> >>>
> > >>> >
> > >>>
> >
> http://industrieit.com/blog/2011/11/stateless-jsf-high-performance-zero-per-request-memory-overhead/
> > >>> >>>
> > >>> >>>  Thomas Andraschko píše v Pá 30. 12. 2011 v 12:43 +0100:
> > >>> >>>  > Hi,
> > >>> >>>  >
> > >>> >>>  > thanks for you answer :)
> > >>> >>>  > Jap, i deploy it with jetty:run.
> > >>> >>>  > I already found the issue, somehow this objects
are stored in
> > the
> > >>> >>>  Logger.
> > >>> >>>  > I changed the code that the logger will be removed
before
> > cloning
> > >>> > the
> > >>> >>>  > ViewRoot.
> > >>> >>>  > Now it also works with MyFaces :)
> > >>> >>>  >
> > >>> >>>  > Thomas
> > >>> >>>  >
> > >>> >>>  > 2011/12/30 Martin Koci <martin.kocicak.koci@gmail.com>
> > >>> >>>  >
> > >>> >>>  > > Hi,
> > >>> >>>  > >
> > >>> >>>  > > Plexus container is a IoC container used by
Maven, so this
> > >>> > must be
> > >>> >>>  > > bug/feature in maven jetty plugin in combination
with
> > >>> > statelessjsf. Do
> > >>> >>>  > > you deploy it with mvn jetty:run?
> > >>> >>>  > >
> > >>> >>>  > > Regards,
> > >>> >>>  > >
> > >>> >>>  > > Kočičák
> > >>> >>>  > >
> > >>> >>>  > > Thomas Andraschko píše v Út 27. 12. 2011
v 15:00 +0100:
> > >>> >>>  > > > Hi,
> > >>> >>>  > > >
> > >>> >>>  > > > i'm trying to use the statelessjsf addon
(It's a
> > >>> > addon developed by
> > >>> >>>  > > > industrieit from rudy but the link is
currently offline)
> > >>> > for my
> > >>> >>>  > > > application. In a basic sample application
it works with
> > >>> > myfaces
> > >>> >>>  (with
> > >>> >>>  > > some
> > >>> >>>  > > > modification) and mojarra.
> > >>> >>>  > > > Somehow in my real project, i get an exception
when the
> > >>> > addon is
> > >>> >>>  trying
> > >>> >>>  > > to
> > >>> >>>  > > > clone the viewroot:
> > >>> >>>  > > >
> > >>> >>>  > > > java.lang.IllegalArgumentException: Can
not set
> > >>> >>>  > > > org.codehaus.plexus.PlexusContainer field
> > >>> >>>  > > >
> > >>> >>>
> >  org.codehaus.plexus.archiver.manager.DefaultArchiverManager.container
> > >>> > to
> > >>> >>>  > > >
> > >>> > org.codehaus.plexus.archiver.manager.DefaultArchiverManager
> > >>> >>>  > > >     at
> > >>> >>>  > > >
> > >>> >>>  > >
> > >>> >>>
> > >>> >
> > >>>
> >
> sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:146)
> > >>> >>>  > > >     at
> > >>> >>>  > > >
> > >>> >>>  > >
> > >>> >>>
> > >>> >
> > >>>
> >
> sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:150)
> > >>> >>>  > > >     at
> > >>> >>>  > > >
> > >>> >>>  > >
> > >>> >>>
> > >>> >
> > >>>
> >
> sun.reflect.UnsafeFieldAccessorImpl.ensureObj(UnsafeFieldAccessorImpl.java:37)
> > >>> >>>  > > >     at
> > >>> >>>  > > >
> > >>> >>>  > >
> > >>> >>>
> > >>> >
> > >>>
> >
> sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:57)
> > >>> >>>  > > >
> > >>> >>>  > > > This does only occur if i run the application
within
> > >>> > maven and
> > >>> >>>  jetty. On
> > >>> >>>  > > > Tomcat, no exception occurs.
> > >>> >>>  > > > Where does this Plexus stuff come from?
Why is it in the
> > >>> > view root?
> > >>> >>>  > > >
> > >>> >>>  > > > Thanks and best regards
> > >>> >>>  > > > Thomas
> > >>> >>>  > >
> > >>> >>>  > >
> > >>> >>>  > >
> > >>> >>>
> > >>> >>>
> > >>> >>>
> > >>> >>
> > >>> >
> > >>>
> > >>
> > >>
> >
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message