Hi Note in the latest code, another performance improvement was done over generated ids (MYFACES-3330), reducing the final size of the generated html. Doing some tests, I notice that mojarra use a "simplified" form to call methods on the standard jsf api, calling first a function on "mojarra" namespaces and then inside that function there is the real call.
Leonardo 2011/10/13 Werner Punz <werner.p...@gmail.com>: > Just to add some numbers, the rendered html seems to be roughly 10-15% more > compact on Mojarra. We did some work already by replacing our inline > oamsubmit by an externalized call which was the biggest issue, but there > seems to be still room for improvement. > > > Werner > > > Am 10/14/11 1:21 AM, schrieb Werner Punz: >> >> Actually now that I have some tests at hand, I just >> coded some profiling code in. >> >> Here are some numbers for tests which are running on both impls. >> The tests have been performed at the Production stage on both impls. >> The testing environments where myfaces 2.1.4-SNAPSHOT against Mojarra >> 2.1.2. Both running on the same testing framework. The tests usually are >> done from the begin of the testgroup til the end they count more or less >> server and client performance and testing time. But the differences give >> a good indication about the corresponding speeds. >> >> The machine which ran the tests was a macbook pro core2duo with 8 gig >> ram and the tests were run on an ssd. So IO impact is down to a bare >> minimum here. The tests themselves do not do any excessive disk io. >> >> >> JSF Protocol Tests >> MyFaces: Time for test in ms: 239 >> Mojarra: Time for test in ms: 207 >> This is a servlet based test >> >> Testgroup: Full Body Replacement >> MyFaces:Time for test in ms: 42 >> Mojarra:Time for test in ms: 35 >> This is a servlet based test >> >> Testgroup: Multi form situation >> MyFaces: Time for test in ms: 4134 >> Mojarra:Time for test in ms: 4426 >> This is a jsf related test >> >> Testgroup: Testing for decorated api calls >> MyFaces: Time for test in ms: 24 >> Mojarra: Time for test in ms: 34 >> >> Testgroup: Double Eval Detection: >> MyFaces: Time for test in ms: 2047 >> Mojarra: Time for test in ms: 2060 >> >> Testgroup: Table Test, replacement of table elements >> MyFaces: Time for test in ms: 7289 >> Mojarra: Time for test in ms: 9229 >> >> Testgroup: Partial Page Rendering Nav Case >> MyFaces: Time for test in ms: 2168 >> Mojarra: Time for test in ms: 2308 >> >> Testgroup: MyFaces Event Lifecycle test >> MyFaces: Time for test in ms: 130 >> Mojarra: Time for test in ms: 131 >> >> So what we have here is that in most cases especially in all jsf related >> tests myfaces is a little bit faster than Mojarra. >> Our scripts seem to be roughly 10% slower, however.But i also still have >> some self induced overhead in the test framework which might count for >> roughly 2-3% which is not active in Mojarra and we deal with corner >> cases mojarra does not cover. >> >> The difference probably is on IE6 even more, because I am dealing more >> cleanly with the broken garbage collector of IE6 in my code which causes >> also some performance overhead. >> >> Also have in mind, we deal with more functonality and more code and also >> we have some fixes in which Mojarra yet has to add. >> Under normal JSF circumstances by now the server seems to make up for >> the speed difference (normally 95% of the time is spent on the server >> anyway) by being roughly 10-15% faster than Mojarra by now. >> >> If we turn to development the picture turns a little bit with myfaces >> being slower in some tests (I will give the performance numbers tomorrow). >> >> So my conclusion is that they probably have tested against an old Impl >> here. >> >> I will commit the code with the profiling data tomorrow once I have >> resolved the problem of the testing framework interfering with myfaces >> on production level performancewise. >> >> >> >> Werner >> >> Am 10/13/11 11:20 PM, schrieb Werner Punz: >>> >>> Yes from what i gather one of the issues they had in the slides was the >>> overall page size. The question there is more along the lines what did >>> they count, just the rendered code, or also the includes. >>> >>> I can help to reduce the size on the JSF.js side. We have some code >>> which is not directly active for JSF 2.1 and will very likely become >>> part of jsf 2.2 or 2.3. it can be used today already by adding config >>> params, Also we have some internationalization >>> of the internal error messages. >>> >>> This code could be externalized into an addition js file for people who >>> need it. I think we might save around 20Kbytes that way. >>> >>> I personally did not think that it was necessary due to the fact that >>> the js files usually are gzipped while still bigger than mojarra we >>> after gzipping the file talk about sizes of 10-30k etc... >>> >>> In the end externalizing that code would have caused more burden on the >>> users than it would have helped. But given that mojarra just implements >>> the raw api and nothing else and does not take some corner conditions >>> into consideration and has no browser optimizations they are >>> significantly smaller in their jsf.js file and if our size is a problem >>> we can reduce it. >>> >>> >>> >>> >>> Werner >>> >>> >>> Am 10/13/11 11:07 PM, schrieb Leonardo Uribe: >>>> >>>> Hi >>>> >>>> I believe probably we already did that. The biggest bottleneck we had >>>> was that renderers did many calls to map.get(). Mojarra had an >>>> optimization in this part, but MyFaces do not until 2.0.9/2.1.3, so I >>>> suppose with the latest code we have better numbers. >>>> >>>> regards, >>>> >>>> Leonardo Uribe >>>> >>>> 2011/10/13 Werner Punz<werner.p...@gmail.com>: >>>>> >>>>> I would be interested as well, especially regarding their test >>>>> setup, we >>>>> basically doubled for instance our ajax performance between 2.0.4 and >>>>> the >>>>> current state of affairs. >>>>> >>>>> So it might be interesting to see what testsetup they were using. >>>>> From a pure memory point of view we of course have a higher load on the >>>>> browser because our ajax implementation deals with things mojarra >>>>> does not >>>>> and also has an oo layer underneath. But I added browser specific >>>>> optimisations so on modern browsers we should be slightly faster than >>>>> mojarra in raw ajax processing (at least my personal tests resembled >>>>> that >>>>> when I did the profiling), while mojarra is sligtly ahead on Firefox >>>>> 3.5 and >>>>> IE6 and 7. >>>>> >>>>> Just giving the numbers unfortunately does not help to see where their >>>>> bottleneck was they discovered. >>>>> >>>>> >>>>> >>>>> Werner >>>>> >>>>> >>>>> Am 10/13/11 10:13 PM, schrieb Andy Schwartz: >>>>>> >>>>>> Gang - >>>>>> >>>>>> I recently got wind of the following web framework performance talk >>>>>> that was presented at JavaOne: >>>>>> >>>>>> >>>>>> >>>>>> https://oracleus.wingateweb.com/published/oracleus2011/sessions/24122/S24122_234496.pdf >>>>>> >>>>>> >>>>>> >>>>>> I did not attend, but based on the slides it looks like the presenters >>>>>> did an very thorough/systematic job of evaluating >>>>>> performance/scalability for a handful of web frameworks, including >>>>>> JSF. (I also have to say that they slides are simply beautiful - >>>>>> wow!) >>>>>> >>>>>> I wanted to call attention to this talk because I am concerned about >>>>>> one aspect of the results. Looking at slide #73, it seems that the >>>>>> presenters are seeing significant overhead in the MyFaces test runs >>>>>> (ie. vs. equivalent runs in Mojarra). I don't have any details other >>>>>> than the $ numbers included in the slides, but seems quite possible >>>>>> that there is some low-hanging fruit waiting to be picked (or >>>>>> optimized). >>>>>> >>>>>> Is anyone acquainted with the presenters? Perhaps it would be >>>>>> worthwhile to contact them to see whether it would be possible to take >>>>>> a closer look at the test case? >>>>>> >>>>>> Andy >>>>>> >>>>> >>>>> >>>>> >>>> >>> >>> >>> >> >> >> > > >